相关疑难解决方法(0)

我如何从该脚本中获取脚本文件名?

我很确定答案是否定的,但我想我还是会问.

如果我的站点引用了一个名为"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)

可能比依赖检查更值得麻烦,但是到底是怎么回事.

html javascript

39
推荐指数
5
解决办法
4万
查看次数

获取脚本路径

在CSS中,任何图像路径都相对于CSS文件位置.

f.ex如果我把CSS文件放入/media/css/mystyles.css并使用类似的东西

.background:url(../images/myimage.jpg);
Run Code Online (Sandbox Code Playgroud)

浏览器将查找/media/images/myimage.jpg有意义的图像.

是否有可能在JavaScript中做同样的事情?

F.ex如果我包含/media/js/myscript.js并将此代码放在那里:

var img = new Image();
img.src = '../images/myimage.jpg';
Run Code Online (Sandbox Code Playgroud)

找不到图像,因为浏览器使用HTML文件作为起点,而不是脚本位置.我希望能够使用脚本位置作为起点,就像CSS一样.这可能吗?

javascript css

32
推荐指数
4
解决办法
4万
查看次数

获取执行JavaScript文件的URL(主要是IE6-7问题)

嘿所有,我一直在尝试将一个通用函数放在一起,检索网页上正在执行的JavaScript文件的绝对URL:

http://gist.github.com/433486

基本上你可以这样打电话:

getScriptName(function(url) {
    console.log(url);
    // http://www.example.com/myExternalJsFile.js
});
Run Code Online (Sandbox Code Playgroud)

在页面上的外部JavaScript文件中,然后可以对其执行某些操作(例如,查找<script>加载它的标记).

它几乎在我测试过的所有浏览器中都很棒(至少Firefox,Chrome,Safari,Opera v10和IE 8).

但是,它似乎在IE 6和7中失败.回调函数被执行,但检索到的名称是主HTML页面的URL,而不是JavaScript文件.继续该示例,getScriptName使用参数调用回调:http://www.example.com/index.html

所以我真正想问的是,是否有其他方法可以获取当前JavaScript文件的URL(可能是IE 6和7特定的hackery)?提前致谢!

编辑:此外,这不适用于所有情况,所以请不要推荐它:

var scripts = document.getElementsByTagName("script");
return scripts[scripts.length-1].src;
Run Code Online (Sandbox Code Playgroud)

我希望它适用于动态创建的脚本标记(可能不会放在页面的最后),也就是延迟加载.

html javascript internet-explorer cross-browser absolute

19
推荐指数
1
解决办法
961
查看次数