【发布时间】:2013-01-01 13:11:41
【问题描述】:
我需要加载跨域 JavaScript
我的站点中的书签动态文件http://jsbookmarklets.com/
解决方案应满足:
- 获取当前文件的路径
- 当前网页和执行的JS文件的域不同
- 解决方案应该是跨浏览器的
- 可能会同时异步加载多个脚本(这就是为什么下面提到的相关问题不适合的原因)
我想获取当前执行 JavaScript 代码的文件路径,以便动态加载更多资源(更多 CSS 文件和 JS 文件,如自定义代码和 jQuery、jQuery UI 和 Ext JS 库) 存储在与 JavaScript Bookmarklet 相同/相对的文件夹中。
以下方法不适合我的问题:
var scripts = document.getElementsByTagName("script");
var src = scripts[scripts.length-1].src;
alert("THIS IS: "+src);
不适合我的问题的相关问题:
【问题讨论】:
-
我不明白为什么第一个相关问题没有回答你的问题。请告诉我们如何动态加载脚本,这对于获取路径非常重要。
-
上述方法不适用于跨域JS文件
-
只有第一句话是相关的:它一般不起作用,但可能有解决方法。但是,您可以在脚本中为您的路径放置一个静态变量,该变量可能由服务器端脚本生成。
-
我正在使用 var s = document.createElement('script'); 加载新的 JavaScript 文件s.setAttribute('src', 'code.js'); document.body.appendChild(s);而且我相信这是跨域文件的唯一可能方式(现代跨域 AJAX(类似)请求不是一种选择,因为我需要一个适用于几乎任何随机网站的通用解决方案)
-
为什么不简单地在服务器端生成 js 文件的某些部分,比如
var __domain = '$_HOST';?这适用于任何浏览器,包括网景。
标签: javascript jquery cross-domain bookmarklet