jQuery动态脚本标记添加导致IE9两次请求src

时间:2011-07-07 00:52:20

标签: javascript jquery internet-explorer-9

刚刚遇到一些与IE9非常奇怪的东西(多么不同寻常?)

我有以下代码来克服跨域限制并加载在localhost上运行的javascript

 var url = 'http://local.maglnk.com:45099/download/?info_hash='+info_hash;
 var scriptTag = $('<script />').attr('src',url);
 scriptTag.appendTo('body');

这个代码在IE9以外的任何浏览器上都能正常工作,奇怪的是IE9会两次请求脚本标记的url,第二次执行它会在结尾处添加某种时间戳。网址

 http://local.maglnk.com:45099/download/?info_hash=6eabb12b8bf344feba7d323c940c18d096771b99&_=1309998922080)

我不确定jQuery在动态附加脚本标记时是否添加了尾随“&amp; _ = 1309998922080”,或者IE是否正在进行某种预处理或预解析,在这种情况下我来了在这里询问是否有办法通过javascript停止该机制。

如果你遇到过这样的事情,请放下一行。

3 个答案:

答案 0 :(得分:3)

如果您无论如何使用jQuery,为什么不使用jQuery.getScript

答案 1 :(得分:1)

找到了解决方案。

不要使用appendTo()jQuery方法。而是使用$ .getScript(url),问题就消失了。

因此,当您动态添加脚本标记时,似乎是IE9的jQuery问题。

干杯。

答案 2 :(得分:0)

在某些情况下,$.getScript()可能不合适,因为它可能会破坏加载的javascript文件的顺序。那是因为它是异步的。如果动态加载的JavaScript文件是彼此的依赖关系,那将导致问题。

在这种情况下,您需要这样做:

$( document.body ).append( $( '<script src="hello.js"></script>' ) );