动态添加JS代码到头部标签



我正在尝试添加一个脚本到我的页面的头部标签。我看到的代码,我试图添加在正文标签,但它没有显示在头部标签。

$(document).load(function() {
   $('<script>console.log("hi");</' + 'script>').appendTo("head")
});

我看到<body>中添加了这个,但我没有在<head>中看到它。

我尝试了append, appendTo和document的变体。准备好并记录。负载的功能。到目前为止,这些方法都不起作用。

在我发帖之前,我浏览了几个类似的帖子。我似乎没有解决我的问题

您可能需要做的一件事是将</转义为</

如果它是一个内联脚本,也许你可以试着给它添加一个setTimeout

尝试以下函数:

(function (src) {
    var tagName = 'script', script = document.createElement(tagName);
    script.src = src;
    var elm = document.getElementsByTagName(tagName)[0];
    elm.parentNode.insertBefore(script, elm);
})('SCRIPT.SRC.HERE.js');

这将创建一个动态script标签,并将其添加到第一个script标签之前。虽然它不会以你想要的方式工作,如果你没有任何script标签在你的head。在这种情况下,您可以使用以下函数:

(function (src) {
    var tagName = 'script', script = document.createElement(tagName);
    script.src = src;
    var head = document.getElementsByTagName('head')[0];
    head.insertBefore(script, head.childNodes[0]);
})('SCRIPT.SRC.HERE.js');

这将直接获得head标记中的第一个元素,并在它之前附加新脚本。

document不触发"load"事件-或者如果它这样做,它是从其他加载(如另一个脚本或图像文件)的冒泡事件。尝试将document更改为window:

http://jsfiddle.net/5bhmwyrx/3/

$(window).load(function() {
   var script = $('<script>console.log("hi");</' + 'script>').appendTo(document.head);
   console.log("Script was appended to", script[0].parentNode.nodeName);
   //-> Script was appended to HEAD
});
$(document).load(function() {
   console.log("You should never see this");
});
document.onload = function () {
    console.log("You should not see this in modern browsers");
};

最新更新