获取对<script>父元素的引用
我有一个类似的问题,像发布在这里,而不是获得父母的ID,我怎么可以得到脚本父母的引用,而不必编码脚本标记的ID?
例如,我将下面的代码注入一个网站:
<div> some other html tags <script src="http://path_to_my_script.js"></script> </div>
我需要的是,在我的path_to_my_script.js
文件中,我可以得到一个外部div
的引用。
有一个问题是,代码将被复制和粘贴在同一个网页的几个地方,这使得一个标识符无用。
有没有机会做到这一点,而不需要在整个代码中编码?
如果解决scheme是使用jQuery更好:D
提前致谢。
正如在什么是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;
您可以使用属性select器来获取具有特定src
的脚本,然后使用parent('div')
跳转到包含其div
元素。
var parentDiv = $('script[src="path/to/script.js"]').parent('div');
你需要一种方法来引用你的脚本。 你还希望知道你想要哪个脚本? 如果你只有一个脚本,你可以随时做
var myScript = document.getElementsByTagName("script")[0];
获取页面上第一个脚本的DOM元素。 或者你可以使用jQuery并通过你的脚本循环做一些事情:
$("script").each(function() { alert($(this).html()); });