获取对<script>父元素</script>的引用

时间:2012-04-24 14:17:48

标签: javascript jquery reference

我遇到了类似发布here的类似问题,但是我没有获取父标识,如何获取对父标记的引用而不必编写脚本标记的id?

例如,我将以下代码注入网站:

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

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

有一个问题是,代码将被复制并粘贴在同一网页的多个位置,这使得标识符无用。

如果没有在整个代码中编码id,有没有机会这样做?

如果解决方案是jQuery更好:D

提前致谢。

3 个答案:

答案 0 :(得分:44)

正如What is the current element in Javascript?中所述,当前<script>元素也是最后一个<script>元素,在执行时

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

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

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

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

您需要一种方法来引用您的脚本。您还希望知道自己想要哪个脚本?如果您只有一个脚本,则可以随时执行

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

获取页面上第一个脚本的DOM元素。或者你可以使用jQuery并遍历你的脚本来执行每个操作:

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