Javascript 动态地将JS代码添加到head标记
我正在尝试将脚本添加到页面的head标记中。我看到了我试图添加到body标签中的代码,但它没有显示在head标签中Javascript 动态地将JS代码添加到head标记,javascript,jquery,head,Javascript,Jquery,Head,我正在尝试将脚本添加到页面的head标记中。我看到了我试图添加到body标签中的代码,但它没有显示在head标签中 $(document).load(function() { $('<script>console.log("hi");</' + 'script>').appendTo("head") }); $(文档).load(函数(){ $('console.log(“hi”);).appendTo(“head”) }); 我在中看到了这一点,但在中没有看到
$(document).load(function() {
$('<script>console.log("hi");</' + 'script>').appendTo("head")
});
$(文档).load(函数(){
$('console.log(“hi”);).appendTo(“head”)
});
我在
中看到了这一点,但在
中没有看到
我尝试了append、appendTo和document.ready和document.load函数的变体。到目前为止,这些措施都没有奏效
在发布之前,我浏览了很多类似的帖子。我似乎没有解决我的问题您可能需要做的一件事是退出
尝试以下功能:
(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');
(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');
这将创建一个动态script
标记,并将其添加到第一个script
标记之前。尽管如果你的头中没有任何脚本
标记,它将无法以你想要的方式工作。在这种情况下,您可以使用以下功能:
(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');
(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
标记中的第一个元素,并在其前面附加新脚本。文档不会触发“加载”事件,或者如果触发,则是其他加载(如另一个脚本或图像文件)的冒泡事件。尝试将文档
更改为窗口
:
$(窗口).load(函数(){
var script=$('console.log(“hi”);).appendTo(document.head);
console.log(“脚本已附加到”,脚本[0].parentNode.nodeName);
//->脚本被附加到头部
});
$(文档).load(函数(){
log(“你不应该看到这个”);
});
document.onload=函数(){
log(“你不应该在现代浏览器中看到这一点”);
};
如果脚本正在工作,那么它在哪里结束会有什么不同?更高级别的问题是什么?出于某些google分析的原因,我希望将此脚本添加到head Tag中谢谢,但我仍然没有在head Tag中看到它如果你看这个,它确实会像window一样触发一个onload事件(请参见:),但OP使用jQuery来处理此问题会有所帮助,不管怎么说,这会使任何事情顺利进行,并且不会回答OP提出的问题anyway@Daemedeor-document.onload=function(){console.log(“document onload事件”);}代码>不记录任何内容(在当前浏览器中)。它太旧了,甚至不再在浏览器中实现,它是
-超级老派的JS api。@user3861559-你试过我的小提琴吗??下面是它被附加到头部的证据(看看控制台):您的代码可以工作。您还可以使用document.head.appendChild(脚本)代码>