document.head.appendchild在移动设备上工作

时间:2014-03-17 09:33:36

标签: javascript css dom browser

我在下面找到了代码。 它工作得很好。但我发现它不适用于移动设备。 我知道document.getElementsByTagName("head")[0].appendChild此代码存在问题...移动浏览器不允许使用该代码。 通常人们会使用document.head

所以我将代码document.getElementsByTagName("head")[0].appendChild更改为document.head.appendChild。但它仍然无法在移动设备上运行。

我该怎么办?

 function detectIE() {
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf('MSIE ');
    var trident = ua.indexOf('Trident/');

    if (msie > 0) {
        // IE 10 or older => return version number
        alert("ie10 or older");
        var ss = document.createElement("link");
        ss.type = "text/css";
        ss.rel = "stylesheet";
        ss.href = "css/ie9font.css";
        document.getElementsByTagName("head")[0].appendChild(ss);
        return false;
    }

    if (trident > 0) {
        // IE 11 (or newer) => return version number
        var rv = ua.indexOf('rv:');
        alert("ie11");
        var ss = document.createElement("link");
        ss.type = "text/css";
        ss.rel = "stylesheet";
        ss.href = "css/ie9font.css";
        document.getElementsByTagName("head")[0].appendChild(ss);
        return false;
    }

    // other browser
    var rv = ua.indexOf('rv:');
    alert("other");
    var ss = document.createElement("link");
    ss.type = "text/css";
    ss.rel = "stylesheet";
    ss.href = "css/font.css";
    document.getElementsByTagName("head")[0].appendChild(ss);
    return false;
}
detectIE();

效果很好。但我发现它不适用于移动设备。 我知道document.getElementsByTagName("head")[0].appendChild此代码存在问题...移动浏览器不允许使用该代码。 通常人们会使用' document.head'。

所以我将代码document.getElementsByTagName("head")[0].appendChild更改为document.head'.appendChild。但它仍然无法在移动设备上运行。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

我用过:

var head = document.head || document.documentElement.childNodes[0];

......它在我的案例中有用(移动)。当然假设 head 元素直接跟在 html 元素之后。