<script type="text/javascript" src="something.js"></script>
something.js:
var scriptTag = document.getElementsByTagName('script');
scriptTag = scriptTag[scriptTag.length - 1];
var parentTag = scriptTag.parentNode;
https://stackoverflow.com/a/10312824/1099074建议这样做。
然而,这种解决方案在某些情况下不起作用。
同样可以说https://stackoverflow.com/a/3326554/1099074。
什么是不涉及frownable document.write的密闭解决方案?例如。我目前要采用的解决方案:
var childId = Math.floor((Math.random() * 1000000) + 1);
document.write('<div id="' + childId + '"></div>');
var parentTag = document.getElementById(childId).parentNode;
非常感谢!
答案 0 :(得分:0)
这是我过去写的东西,实现了这一点。它不假设jquery存在,因此它包含自己的文档就绪检查。诀窍是它应该等到文档加载,然后返回并添加元素。
(function () {
var current_script = document.getElementsByTagName('script');
current_script = current_script[current_script.length - 1];
// modified from http://dustindiaz.com/smallest-domready-ever
function ready(callback) {
/in/.test(document.readyState)
?setTimeout(function(){ready(callback)},9)
:callback()
}
ready(function() {
var div = document.createElement('div');
div.setAttribute('id', Math.floor((Math.random() * 1000000) + 1));
current_script.parentNode.insertBefore(div, current_script.nextSibling);
});
})();
更简单的解决方案是:控制可嵌入脚本的文件名。您可以为脚本提供ad_embed_f4t4igjf8ig93.js
的文件名,并让用户将其嵌入到页面中。在文档就绪时,只需使用该src查找脚本标记。