Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态地将JS代码添加到head标记_Javascript_Jquery_Head - Fatal编程技术网

Javascript 动态地将JS代码添加到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”) }); 我在中看到了这一点,但在中没有看到

我正在尝试将脚本添加到页面的head标记中。我看到了我试图添加到body标签中的代码,但它没有显示在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(脚本)