我遇到了类似发布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
提前致谢。
答案 0 :(得分:44)
正如What is the current element in Javascript?中所述,当前<script>
元素也是最后一个<script>
元素,在执行时。
答案也适用于您的情况,因为外部脚本的加载不会延迟(通过async
或defer
属性)。
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());
});