从src Javascript访问父脚本标记

时间:2014-05-22 23:12:49

标签: javascript html dom

<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;

非常感谢!

1 个答案:

答案 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查找脚本标记。