在JavaScript中查找自己的来源

在JavaScript中查找自己的来源,javascript,jquery,Javascript,Jquery,有没有办法找到当前运行脚本的来源? 我想根据脚本的加载位置添加不同的行为 e、 g.从以下位置加载: http://localhost:8080/js/myscript.js vs 我不是加载的人,因此我无法在加载时添加一些信息,并且脚本是使用$.getScript()动态加载的,因此我无法查找元素。调用脚本时,除非它标记为延迟或异步,否则它将始终是当时页面上的最后一个元素(因为它阻塞了) 使用此选项,您可以执行以下操作: var scripts = document.getElements

有没有办法找到当前运行脚本的来源? 我想根据脚本的加载位置添加不同的行为

e、 g.从以下位置加载:

http://localhost:8080/js/myscript.js 
vs


我不是加载的人,因此我无法在加载时添加一些信息,并且脚本是使用
$.getScript()
动态加载的,因此我无法查找元素。

调用脚本时,除非它标记为
延迟
异步
,否则它将始终是当时页面上的最后一个元素(因为它阻塞了)

使用此选项,您可以执行以下操作:

var scripts = document.getElementsByTagName('script'),
    mylocation = scripts[scripts.length-1].getAttribute("src");

那你想怎么做就怎么做。

好吧,这是一种黑客行为

首先,需要获取所有脚本元素

var all_scripts = document.getElementsByTagName('script');
选择当前脚本

var current_script = scripts[all_scripts.length-1];
现在您可以看到脚本的src

alert(current_script.src);
已更新 根据@FelixKling的建议,更改了已删除的
var o=$(此)

更新的示例

$.getScript("http://localhost:8080/js/myscript.js")
    .done(function(data, textStatus, jqxhr) {

        // this.url is the script url passed to $.getScript
        if(this.url.search('http://localhost:8080') != -1){
            alert("do one thing for http://localhost:8080/js/myscript.js");
        }
        if(this.url.search('http://www.myhost.com') != -1){
            alert("do another thing for http://www.myhost.com/js/myscript.js");
        }
    })
    .fail(function(){
        alert("somethign went wrong");
    });

自调用以来您已经有了这些信息。只需将
url
分配给一个参数,而不是直接输入
url
,然后检查该参数以找出脚本的来源。目前不兼容跨浏览器,但无论如何都很有趣:请看我的答案,应该可以使用。@StefanNeubert这正是API I w在查找时。如果您只是不将
this
传递给jQuery,您可以避免键入
o[0]
var o=this;
或到处使用
this.url
this
引用
jqXHR
,它既不是DOM元素,也不是HTML字符串,因此没有理由传递给jQuery(
$/code>)@FelixKling已更新,谢谢您提供的信息。@milkshake我不确定这与问题有什么关系…@GuyKorland,因为您可以直接检查
$getScript()
使用的URL,并在此基础上执行不同的行为,就像您原来的问题一样。@milkshake但我的代码在“”不在加载函数中,这是否也适用于JQuery getScript()?我不知道。可能吧,但我真的不知道。我想它类似于@Kolink answer,但它是否适用于JQuery.getScript()?
$.getScript("http://localhost:8080/js/myscript.js")
    .done(function(data, textStatus, jqxhr) {

        // this.url is the script url passed to $.getScript
        if(this.url.search('http://localhost:8080') != -1){
            alert("do one thing for http://localhost:8080/js/myscript.js");
        }
        if(this.url.search('http://www.myhost.com') != -1){
            alert("do another thing for http://www.myhost.com/js/myscript.js");
        }
    })
    .fail(function(){
        alert("somethign went wrong");
    });