刚刚遇到一些与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停止该机制。
如果你遇到过这样的事情,请放下一行。
答案 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>' ) );