[英]Dynamically add JS code to head tag
我正在嘗試將腳本添加到頁面的head標簽。 我正在嘗試在body標簽中添加代碼,但未在head標簽中顯示。
$(document).load(function() {
$('<script>console.log("hi");</' + 'script>').appendTo("head")
});
我看到這是在<body>
中添加的,但是我沒有在<head>
看到它。
我嘗試了append,appendTo和document.ready和document.load函數的變體。 到目前為止,這些都不起作用。
在發布之前,我經歷了類似線程的討論。 我似乎沒有解決我的問題
您可能需要做的一件事是將</
換成<\\/
如果它是一個內聯腳本,也許您可以嘗試向其添加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
標簽之前。 如果如果head
沒有任何script
標簽,它將無法以您希望的方式工作。 在這種情況下,您可以使用以下功能:
(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
不會觸發“加載”事件-否則,它是來自其他加載對象(例如另一個腳本或圖像文件)的冒泡事件。 嘗試將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");
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.