代码之家  ›  专栏  ›  技术社区  ›  Brian Hasden

获取当前执行javascript的URL

  •  1
  • Brian Hasden  · 技术社区  · 15 年前

    我正在尝试查找当前正在执行的javascript的URL。我知道我可以用 window.location.href 对于当前页面,但这不一定是正在执行的脚本的路径。

    非常感谢您的帮助。

    谢谢。

    编辑1: 我完全愿意使用插件来完成这一任务。毫不犹豫地提出任何建议。

    编辑2: 我需要这样做,以便找到从当前执行脚本所在位置到另一个资源的相对路径。问题是,例如,脚本运行在/js/myscript.js,我需要引用的资源是/imgs/test.png。由于.js文件可以从任何地方包含,因此无法知道.png文件的路径。

    4 回复  |  直到 10 年前
        1
  •  2
  •   streetparade    15 年前

    试试这个,但我不能保证它能在我的火狐浏览器上运行。

    var scripts = document.getElementsByTagName("SCRIPT");
    var script  = scripts[scripts.length-1].src;
    
    var scriptName = script.match(/[^\\|^\/]+\.\w+\w?$/);
    alert(scriptName);
    

    将通知脚本名称:

        2
  •  2
  •   Community CDub    8 年前

    基于一个类似的问题 ~/ equivalent in javascript 卡玛雷的回答解决了我的问题。

    从卡玛雷的回答来看:

    使用 base 标签:

    <head> 
       <base href="http://www.example.com/myapp/" /> 
    </head> 
    

    从现在起,此页上的任何链接使用,否 无论是JavaScript还是HTML,都将 相对于基标记,即 他说:“这是一个很好的选择。” http://www.example.com/myapp/ “。

    显然这不是我想要的,但它解决了我所面临的潜在问题。通过指定基,所有请求都是相对于基规范发出的。

    编辑: 对于任何感兴趣的人来说,jquery方法getscript()似乎不尊重火狐3.5.7中的基本位置。显然,这可能不是jquery中的真正bug,可能更像是一个Firefox问题,但值得注意。在IE8中,一切似乎都正常工作。我已经向jquery提交了一张罚单,看看他们是否可以简化行为。你可以在 http://dev.jquery.com/ticket/6034 .

        3
  •  0
  •   Diodeus - James MacFarlane    15 年前

    我认为你不能用JavaScript来实现这一点。您需要一个javascript跟踪插件。

    编辑: Firebug和IE8调试器(按F-12)一样可以帮助您实现这一点。

        4
  •  0
  •   Afonso Matos    10 年前

    您可以利用浏览器产生的错误,并使用try/catch查找绝对文件位置。

    我已经编写了一个简单的函数。你可以看到 here