我在文件中包含myscript.js,http://site1.com/index.html如下所示:
<script src=http://site2.com/myscript.js></script>
Run Code Online (Sandbox Code Playgroud)
在"myscript.js"中,我希望能够访问URL" http://site2.com/myscript.js ".我想要这样的东西:
function getScriptURL() {
// something here
return s
}
alert(getScriptURL());
Run Code Online (Sandbox Code Playgroud)
如果从上面提到的index.html调用,它会提醒" http://site2.com/myscript.js ".
我正在尝试做一些类似C #include "filename.c"或PHP的东西,include(dirname(__FILE__)."filename.php")但是在javascript中.我知道我可以这样做,如果我可以从URL加载一个js文件(例如标签的src属性中给出的URL).有什么方法可以让javascript知道吗?
或者,是否有任何好方法从同一个域动态加载JavaScript(不知道具体的域)?例如,假设我们有两个相同的服务器(QA和生产),但它们显然具有不同的URL域.有没有办法做一些像include("myLib.js");myLib.js将从加载它的文件的域加载?
对不起,如果那有点令人困惑.
我很确定答案是否定的,但我想我还是会问.
如果我的站点引用了一个名为"whatever.js"的脚本,是否可以从该脚本中获取"whatever.js"?喜欢:
var scriptName = ???
if (typeof jQuery !== "function") {
throw new Error(
"jQuery's script needs to be loaded before " +
scriptName + ". Check the <script> tag order.");
}
Run Code Online (Sandbox Code Playgroud)
可能比依赖检查更值得麻烦,但是到底是怎么回事.
如何使用jQuery在javascript中获取当前脚本的路径
例如,我有,site.com/js/script.js并在此脚本中有一个代码:
$(document).ready(function() {
alert( ... this code ... );
}
Run Code Online (Sandbox Code Playgroud)
它应该返回带有"/js/script.js"消息的警告框.这个函数应该像__FILE__php中的魔术常量一样工作
那么,为什么我需要这个呢?
我想动态设置背景图片:
$("somediv").css("background-image", "url(" + $SCRIPT_PATH + "/images/img.png)");
Run Code Online (Sandbox Code Playgroud)
和images目录是文件/js附近的script.js目录
和js文件夹的名称可以动态设置,因此脚本和图像可以在/myprogect/javascript-files目录中
可能重复:
我的脚本src URL是什么?
我有情况:
<script
type="text/javascript"
src="http://server/some.js">
</script>
Run Code Online (Sandbox Code Playgroud)
在文件some.js我需要知道相同文件some.js,eq的完整路径." http://server/some.js ".我怎样才能做到这一点?
我无法更改HTML代码(客户端包括JS文件).
我试图在javascript中构建某种记录器功能.是否有任何API可供脚本获取自己的文件名?
假设script脚本运行时文档中的最后一个元素*是当前运行的脚本是否安全?
例如,我想创建一个脚本,可以将其放在页面正文的任何位置,并在同一个地方显示一个元素.我正在做这样的事情:
function getCurrentScriptElement() {
var scripts = document.getElementsByTagName('script');
return scripts[scripts.length - 1];
}
var script = getCurrentScriptElement();
var view = document.createElement('span');
/* Put stuff in our view... */
script.parentNode.insertBefore(view, script);
Run Code Online (Sandbox Code Playgroud)
假设脚本在文档正文中,这是"安全吗?" 该getCurrentScriptElement函数是否总是返回正在运行的脚本?如果没有,怎么办呢?
我想这样做而不将脚本绑定到特定的id属性或类似属性,我希望它只是位置.
我在这里创建了一个示例来拉入此脚本.一个答案表明,其他脚本可能会创建一个像这样的例子会破坏的情况.是否可以在此示例中添加其他脚本来破坏它?
有人建议其他带有defer或async属性的脚本可能会破坏这一点.任何人都可以举例说明这样的脚本是如何工作的吗?
据我了解,defer意味着首先加载DOM,然后使用defer标记运行脚本.defer出现在另一个脚本元素上的属性如何影响getCurrentScriptElement?的行为?
async,据我所知,意味着开始获取该脚本并同时保持解析DOM,不要等待......但是当它到达我的脚本时它应该仍然停止并等待,对吧?
我不知道任何一个人如何影响它,任何人都能提供一个例子吗?
*出于此问题的目的,我只对外部脚本感兴趣.
**不是script整个文档中的最后一个script元素,而是运行时文档中的最后一个元素.该文档的其余部分尚未加载,对吧?
如何找到被调用的JS文件的URL?
假设JS文件(它是库的一部分)和HTML文件(它是应用程序)位于不同的服务器上.要查找HTML文件的URL很简单.但是如何在JS文件本身中找出JS文件服务器的服务器名称和路径?(编辑:有一个加载器在同一目录结构中调用thsi库的其他JS文件)
最好是JQuery或纯JS解决方案.
编辑:
在我从你的答案和评论中学到了什么后,我决定将加载程序代码实际移动到第一台服务器上更加清晰,html仍然存在,这避免了问题.
正如我在标题中已经提到的,我正在寻找一个JS函数来获得与我使用这个PHP代码相同的结果:
dirname(dirname(__FILE__))
Run Code Online (Sandbox Code Playgroud)
提前致谢!