【问题标题】:How to determine a script's location from the script's code?如何从脚本的代码中确定脚本的位置?
【发布时间】:2011-11-23 22:39:57
【问题描述】:

在努力解决this problem 的问题时,我遇到了另一个相关问题:如何确定正在运行的脚本的位置? (不,不是document.location,因为它会告诉你页面的位置,包括脚本)

所以,与:

- a.html -

<script type="text/javascript" src="/my/path/myscript.js"></script>

- myscript.js -

var myLoc = document.location; // what to use instead?

【问题讨论】:

  • Get script path的可能重复
  • 您希望得到什么样的答案; JavaScript 文件的 URL?
  • 您试图在页面中实际找到的脚本是 script 标记还是通过 ajax 动态加载的?如果是后者,我不确定你可以
  • @DavidThomas,我需要的是在脚本运行时可用的东西,我可以用它来关联加载的脚本数组,通常以$('script') 的形式提供
  • @Chris,是后者(如果您查看我上面包含的链接,您会看到我来自哪里)但是我在代码运行之前在运行时构建脚本标签,并且我可以在标签本身中包含任何类型的信息......我没有一种方法来告诉脚本数组中的哪些条目对应于当前正在运行的脚本(不,它不是最后一个添加了一个 - 不幸的是,否则我就完了)

标签: javascript jquery


【解决方案1】:

如果你可以选择脚本,你可以得到它的src

var scripts = document.getElementsByTagName('script');

var loc = scripts[ 0 ].src;

这将为您提供找到的第一个 script 元素的 src。

你也可以使用 jQuery 来做到这一点。

var loc = $('script').eq(0).prop('src');

或者对于旧的 jQuery 版本:

var loc = $('script').eq(0).attr('src');

$(function() {
    $.ajax({
         type: 'get', cache: false, url: '/svc.html',
         success: function(h) {

             var d = document.createElement('div');
             d.innerHTML = h;

             var scripts = d.getElementsByTagName('script');

             alert( scripts[ scripts.length - 1 ].src );

             $('#main').html( d.childNodes );
         }
    });
});

【讨论】:

  • 如果你仔细阅读我最初试图解决的问题,你就会明白这是不可行的
【解决方案2】:

所以这个问题的答案有两个:1)如果脚本是由标签直接加载的,可以使用 RightSaidFred 的方法,包括在脚本列表中选取最后一个条目,2)对于加载的脚本在通过 ajax 加载的页面中,解决方案是插件位于:Where are scripts loaded after an ajax call?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 2015-07-16
    • 2014-08-26
    • 2011-05-25
    • 2018-09-07
    • 1970-01-01
    相关资源
    最近更新 更多