在IE8中使用JavaScript的元标记之后直接向HEAD添加CSS链接

时间:2015-07-04 15:56:03

标签: javascript css internet-explorer-8

我想在我的网页上的元标记后立即添加一个CSS链接。到目前为止,我有以下代码:

var el_head = document.getElementsByTagName('head')[0];
var css_path_str = 'http://fakedomain.com/my.css';

var ref_obj = document.createElement("link");
ref_obj.rel = "stylesheet";
ref_obj.type = "text/css";
ref_obj.media = "all";
ref_obj.href = css_path_str;

var el_head_meta = el_head.getElementsByTagName('meta');
if(el_head_meta && el_head_meta.length > 0)
{
    var el_collection_count_int = el_head_meta.length-1;
    var el_meta_last_obj = el_head_meta[el_collection_count_int];

    var elem_parent_dest_obj = el_meta_last_obj.parentNode;
    elem_parent_dest_obj.insertBefore(ref_obj, el_meta_last_obj.nextSibling);
}

它在现代浏览器上完美运行,但它不适用于IE8(惊喜,惊喜!)。

当我在IE8上运行上面的代码时,浏览器似乎“加载”了20或30秒,然后它什么也没做。

我有什么想法可以让它发挥作用吗?

注意:在Modern.IE的Windows 7虚拟机上使用IE8

修改

在摆弄这个之后,我发现该脚本确实有效。我似乎遇到了IE8的问题,它不是理想的开发人员工具。每当您第一次加载页面时,它会显示CSS被添加到正确的位置。但是,当你刷新页面时,你再也看不到任何东西了(我甚至不敢猜测为什么会这样)。幸运的是,确实加载了CSS文件(正如我在加载的文件中放入的一些示例声明所验证的那样)。我发现处理这个问题的唯一方法是去地址栏然后按回车;执行此操作时,您会在DOM检查器中看到添加的链接引用。所以,我想每当我在IE8上进行任何测试时,我都会这样做。

1 个答案:

答案 0 :(得分:0)

检查它是否是IE浏览器

 var ua = window.navigator.userAgent; 
var msie = ua.indexOf("MSIE "); if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return version number 
alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    InsertLinkTag();
    return false; 
}

并在IE中使用此工作。并附加你的风格。

     function InsertLinkTag() {
           var css = '** your complete CSS style**', head = document.head || document.getElementsByTagName('head')[0], style = document.createElement('style'); 
    style.type ='text/css';if(style.styleSheet){ style.styleSheet.cssText = css;
    }else{ 
    style.appendChild(document.createTextNode(css));
} head.appendChild(style);
        }