Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取对<;脚本>;父元素_Javascript_Jquery_Reference - Fatal编程技术网

Javascript 获取对<;脚本>;父元素

Javascript 获取对<;脚本>;父元素,javascript,jquery,reference,Javascript,Jquery,Reference,我有一个类似的问题,比如posted,但是我不需要获取父id,如何在不需要为脚本标记编码id的情况下获取对脚本父id的引用 例如,我将以下代码注入到网站: <div> some other html tags <script src="http://path_to_my_script.js"></script> </div> 其他一些html标记 我需要的是,在我的path\u到

我有一个类似的问题,比如posted,但是我不需要获取父id,如何在不需要为脚本标记编码id的情况下获取对脚本父id的引用

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

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

其他一些html标记
我需要的是,在我的
path\u到
文件中,我可以获得对外部
div
的引用

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

有没有可能在不在整个代码中编码id的情况下执行此操作

如果解决方案是使用jQuery,则更好:D


提前感谢。

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

var myScript = document.getElementsByTagName("script")[0];
获取页面上第一个脚本的DOM元素。或者,您可以使用jQuery和循环脚本来处理每一个:

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

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

var parentDiv = $('script[src="path/to/script.js"]').parent('div');
如中所述,当前的
元素也是执行时的最后一个
元素

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

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

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

请提供更多信息/代码是否要避免在脚本标记上使用id以确保旧浏览器不会崩溃?还是有其他原因?@Esailija:我更新了帖子,希望它能帮助你帮助我:D@hradac:谢谢你的评论。他们两个。第一个原因很明显,另一个原因是代码将被复制并粘贴到同一网页的多个地方,这使得标识符毫无用处。@RobW:+1真棒!!!谢谢这正是我需要的!!:请,你能把你的评论以回复者的身份发布,这样我就可以接受了吗?谢谢你的回复。脚本源属性对于页面中复制和粘贴的所有代码都是相同的。见对hradac的评论。我将更新问题,以说明这一点。无论如何,感谢您的时间。很明显,您不会在一个页面中多次加载同一个脚本,因此您可以简单地将脚本的路径名动态地构建到一个变量中,并立即将其注入选择器字符串。我多么希望这能解决我的问题,但事实并非如此。事实上,我的应用程序对javascript进行了大量的动态加载,但是
document.scripts
数组只包含html本身中的第一个也是唯一一个javascript文件。所有后来加载的js文件都不存在…更简单:
document.currentScript.parentElement
@user10898116 IE似乎不支持此文件:
var scriptTag = document.scripts[document.scripts.length - 1];
var parentTag = scriptTag.parentNode;