【问题标题】:How can I get URL of JS file in same JS file? [duplicate]如何在同一个 JS 文件中获取 JS 文件的 URL? [复制]
【发布时间】:2009-11-10 09:12:20
【问题描述】:

可能重复:
What is my script src URL?

我有情况:

<script 
  type="text/javascript" 
  src="http://server/some.js">
</script>

在文件 some.js 中,我需要知道同一文件 some.js 的完整路径,例如。 http://server/some.js。我该怎么做?

我无法更改 HTML 代码(客户端包括 JS 文件)。

【问题讨论】:

标签: javascript


【解决方案1】:

试试那个

sc = document.getElementsByTagName("script");

for(idx = 0; idx < sc.length; idx++)
{
  s = sc.item(idx);

  if(s.src && s.src.match(/some\.js$/))
  { return s.src; }
}

【讨论】:

  • Tomasz,我是否遗漏了什么或者你在哪里初始化 sc?此外,如果您在 idx = 0 和 s 之前添加 var 关键字,IMO 整个事情会更干净。不错的代码,否则。
  • Tom Bartel - 你是对的,谢谢你的提示
  • 如果在 for 循环中没有 var idx=0,您将引入一个全局 idx 变量(除非您之前使用 var 定义了 idx
【解决方案2】:

最简单的方法就是查找要添加到文档中的最后一个脚本:

var scripts= document.getElementsByTagName('script');
var mysrc= scripts[scripts.length-1].src;

这必须在脚本的主体中完成,而不是在稍后调用的代码中。最好在脚本开头执行此操作并记住该变量,以便在必要时可以在以后的函数调用中使用它,这样它就不会受到脚本中稍后将任何新的&lt;script&gt; 节点插入到文档中的代码的影响。

【讨论】:

  • 这是否也与 async 属性一起使用?
【解决方案3】:

不确定它是否适用于所有浏览器,试试这个:

function getScriptFileName() {
  return (new Error).fileName;
}

【讨论】:

  • 很遗憾,Error 对象是非标准化的,fileName 似乎只存在于 Mozilla 中。
  • 似乎在 Safari 中不起作用。
猜你喜欢
  • 2011-06-05
  • 2020-02-12
  • 2013-05-24
  • 1970-01-01
  • 2017-06-13
  • 2016-07-03
  • 2018-09-26
  • 2018-06-24
  • 1970-01-01
相关资源
最近更新 更多