Как я могу применить класс или стиль к некоторому элементу HTML в IE? - PullRequest
0 голосов
/ 11 августа 2010

Я делаю приложение, которое должно анализировать элементы в дереве XML в HTML, и во всех браузерах все идет хорошо, но IE не хочет применять стили к элементам.Как я мог это исправить?

function add2Doc(elmnt, domDoc, newEl)
{
    /*
     * This function transform an 
     * element to into the an acceptable
     * part of another document, I know
     * exist some beatiful function called
     * importNode but IE, like always doesn't
     * accept.
     */
    if (typeof newEl == 'undefined'){ 
        var newEl = domDoc.createElement(elmnt.tagName);
    }
    if (elmnt.attributes.length > 0){
        for (var cont = 0; cont < elmnt.attributes.length; cont++){
            if (getBrowser() == 0){
                /*
                 * This part of the code it's for the
                 * assholes of MS, what doesn't have 
                 * any kind of consideration for 
                 * the others, this kind of things
                 * consume resources and 
                 * makes more slower the crap of IE.
                 */
                if (elmnt.attributes[cont].specified == true){
                    newEl.setAttribute(elmnt.attributes[cont].nodeName, elmnt.attributes[cont].nodeValue);
                }
            }else{
                    newEl.setAttribute(elmnt.attributes[cont].nodeName, elmnt.attributes[cont].nodeValue);
            }
        }
    }
    childs = elmnt.childNodes;
    if (elmnt.childNodes.length > 0){
        for (var cont = 0; cont < elmnt.childNodes.length; cont++){
            child = elmnt.childNodes[cont];
            if (child.nodeType == 1){
                newChild = new add2Doc(child, domDoc, domDoc.createElement(child.tagName));
                newEl.appendChild(newChild);
            }else if(child.nodeType == 3){
                if (getBrowser() == 1){
                    newEl.appendChild(domDoc.createTextNode(child.nodeValue));
                }else{
                        if (newEl.tagName == 'STYLE'){
                            newEl.csstext = child.nodeValue;
                        }else if (newEl.tagName == 'SCRIPT'){
                            newEl.text = child.nodeValue;
                        } else{
                        newEl.innerText = child.nodeValue;
                        }
                    }
            }

        }
    }
    return newEl;
}

Ответы [ 3 ]

0 голосов
/ 11 августа 2010

В дополнение к наличию соответствующего класса CSS в вашей таблице стилей, вы должны сделать это:

var box = document.createElement("div"); 
box.className = 'your_css_class'; /*forces styling in ie*/
0 голосов
/ 11 августа 2010

Вы должны использовать условные комментарии:

<!--[if IE]>
<script type="text/javascript">
// do something here
</script>
<![endif]-->

Статья здесь: http://www.quirksmode.org/css/condcom.html

0 голосов
/ 11 августа 2010

Вы можете применить специфичные для браузера таблицы стилей или встроить CSS-хаки, чтобы исправить это.

http://www.maratz.com/blog/archives/2005/06/16/essentials-of-css-hacking-for-internet-explorer/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...