关于javascript:获取对< script>的引用

Obtain a reference to <script> parent element

本问题已经有最佳答案,请猛点这里访问。

我有一个类似的问题,比如在这里发布,但是我没有获得父ID,我如何在不需要为脚本标记编码ID的情况下获得对脚本父ID的引用?

例如,我向一个网站注入了以下代码:

1
2
     some other html tags
     <script src="http://path_to_my_script.js">

我需要的是,在我的path_to_my_script.js文件中,我可以得到一个对外部div的引用。

存在一个陷阱,即代码将被复制和粘贴到同一网页的多个位置,这使得标识符无效。

有没有机会不用在整个代码中编码一个ID就可以做到这一点?

如果解决方案是jquery,则更好:d

事先谢谢。


正如在javascript中提到的,当前元素是什么?,当前的元素也是执行时的最后一个元素。

答案也适用于您的情况,因为外部脚本的加载没有延迟(通过asyncdefer属性)。

1
2
3
var scriptTag = document.getElementsByTagName('script');
scriptTag = scriptTag[scriptTag.length - 1];
var parentTag = scriptTag.parentNode;

大多数浏览器(甚至IE6)都支持document.scripts。从版本9开始,火狐支持这个对象。因此,还可以使用以下代码:

1
2
var scriptTag = document.scripts[document.scripts.length - 1];
var parentTag = scriptTag.parentNode;


可以使用属性选择器获取具有特定src的脚本,然后使用parent('div')跳转到包含div元素的脚本。

1
var parentDiv = $('script[src="path/to/script.js"]').parent('div');


您需要一种方法来引用您的脚本。你还想知道你想要哪个脚本吗?如果你只有一个脚本,你可以一直这样做

1
var myScript = document.getElementsByTagName("script")[0];

获取页面上第一个脚本的DOM元素。或者,您可以使用jquery和循环脚本对每个脚本执行一些操作:

1
2
3
$("script").each(function() {
    alert($(this).html());
});