tes*_*est 7 javascript jquery internet-explorer json jquery-data
我有一个编码面试测验,用于前端使用JSON和诸如此类的东西.我提交了我的文件,但我只想了解我所缺少的内容.
其中一个要求是Should not require a web server, and should be able to run offline..
我用过jQuery和习惯$.getJSON()从.JSON文件中获取数据.我把它扔在我的WAMP本地服务器上,它在所有三个主要浏览器(IE,Firefox,Chrome)上都运行良好.然后我把这个项目移到了Desktop,如此钟表,没有LOCALSERVER.
在Firefox 30.0上,它运行良好.没问题.
Oon谷歌浏览器,我知道你没有网络服务器就无法访问本地文件......
但是,在Internet Explorer 11上,它无效.为什么?
这是我正在使用的.这并不复杂.
function loadTasks() {
console.log("Loading tasks...");
$.getJSON("data.json", function(result) {
$.each(result, function(i, task) {
$("#load_tasks").append(
"<div class='row'><span class='data-task'>" + task.name +
"</span> <span class='data-date'>" + task.date +
"</span> <span class='data-name'>" + task.assigned +
"</span> </div>");
});
});
}
Run Code Online (Sandbox Code Playgroud)
这似乎是jQuery中的一个错误.这个bug已经报告给了jQuery.错误状态是固定的.但看起来,这个bug仍然存在.
说明
通常在IE中,ajax是通过ActiveXObjects实现的.但是在IE11中,他们对ActiveXObject实现进行了一些调整,如果我们尝试执行以下操作:
typeof(window.ActiveXObject)
Run Code Online (Sandbox Code Playgroud)
而不是返回'功能',正如在IE文档中所说,它返回undefined.jQuery曾经使用它来在普通浏览器中的xhr和IE中的xhr之间切换.由于检查评估为未定义,因此运行用于在普通浏览器中创建xhr对象的代码.(当然这是一个错误,奇怪的是,对于非本地文件,它工作正常).
在提交给bugs.jquery.com的bug中,bug报告者问道,
要解决这个问题,就足以改变条件:使用"window.ActiveXObject!== undefined?" 而不是"window.ActiveXObject?"
jQuery开发人员确实尝试使用此提交修复此问题,但提交下的注释表明它仍然没有修复,并且还提出了解决此问题的可能方法.
var activex; // save activex somewhere so that it only need to check once
if ( activex === undefined )
try {
new ActiveXObject("MSXML2.XMLHTTP.3.0");
activex = true;
} catch (e) {
activex = false
}
xhr = activex ? createActiveXHR() : createStandardXHR();
Run Code Online (Sandbox Code Playgroud)
来源:https ://stackoverflow.com/a/22368301/1845953
发布答案以防万一其他人遇到它。在我的例子中,IE 正在加载一个 jquery 版本,这显然会导致“JSON undefined”错误。这是我为解决该问题所做的操作:
<!--[if lt IE 9]>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
<script src="http://code.jquery.com/jquery-2.0.3.js"></script>
<!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)
最新的是jquery 2.1.1:直接链接,但它说:
(不支持IE<9)
所以我猜jquery 1.11.1:直接链接
我发现如果你使用带有此标志的 Chrome,你可以在 Chrome 中在本地文件上开发 ajax 和 jquery 的东西:(--allow-file-access-from-files 来源)
| 归档时间: |
|
| 查看次数: |
6833 次 |
| 最近记录: |