使用js创建指向js文件的链接

时间:2013-07-07 22:51:57

标签: javascript

我有以下的js。这也在this fiddle

    (function () {
        var test = document.createElement('script');
        test.type = 'text/javascript';
        test.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'www.example.com/test.js';
        console.log(test);
        document.getElementsByTagName('body')[0].insertAdjacentHTML("beforeEnd", test);
    })();

我想在关闭js标签之前将js放在页面底部。

当我在console.log中查看它时,我得到了预期的结果。 这是

<script type=​"text/​javascript" src=​"http:​/​/​www.example.com/​test.js">​</script>​

然而,当我尝试将其实际添加到我的页面时,我得到[object HTMLScriptElement]

我在这里缺少什么,或者有其他方法可以尝试实现这个目标吗?

3 个答案:

答案 0 :(得分:4)

insertAdjacentHTML将html作为其参数而不是dom节点。我会改用appendChild

document.getElementsByTagName('body')[0].appendChild(test);

答案 1 :(得分:2)

我采用了稍微不同的方法,并尝试将脚本作为body节点的子节点附加。以下是使用您的代码的示例:

(function (document) {
    var test = document.createElement('script');
    test.type = 'text/javascript';
    test.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'www.example.com/test.js';
    document.getElementsByTagName('body')[0].appendChild(test);
})(document);

似乎得到了理想的结果。

希望这有帮助!

答案 2 :(得分:1)

我认为'beforeend'需要全部小写。

[...] document.getElementsByTagName('body')[0].insertAdjacentHTML("beforeend", test);

https://developer.mozilla.org/en-US/docs/Web/API/element.insertAdjacentHTML

在上面查看Musa的答案,在这种情况下这是正确的插入方法。