这 JavaScript 一直使 IE 崩溃
This JavaScript consistently crashes IE
我创建了一个小的搜索功能,它将通过一堆 XML 数据并根据用户的查询提取结果,它在 Chrome 中运行顺畅,但它总是使 IE11 崩溃在用户输入大约两个字符后。
在你问之前,我正在使用直接从 MDN 复制的 .filter
的原型。我没有包括这个,因为它有效,这样做会使代码的长度加倍。
function search() {
var query = document.getElementById("query").value.toLowerCase();
returnSearch(query);
};
//loads xml data
function loadData() {
var data = new XMLHttpRequest();
data.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
getData(this);
}
};
data.open("GET", "abbreviations.xml", true);
data.send();
};
function getData(xml){
var xmlDoc = xml.responseXML;
var acronym = xmlDoc.getElementsByTagName("acronym");
for(var i=0; i < acronym.length; i++) {
content.push(acronym[i].getElementsByTagName("name")[0].childNodes[0].nodeValue + " means: "+ acronym[i].getElementsByTagName("meaning")[0].childNodes[0].nodeValue );
}
};
function returnSearch(query) {
var regexp = new RegExp(query, 'i');
//Its laughable that ie dosen't accept arrow functions
var results = content.filter(function (result) {
return regexp.test(result);
});
document.getElementById('results').innerHTML = results;
console.log(results);
};
这在 Chrome 中运行良好,所以我的问题不是如何做,而是 "why does IE not like this"。
基本上我最终使用元标记强制 IE 进入 "Edge" 模式。 IE 是如此挑剔,如果某些东西不起作用,使用这个内容标签总是一个好主意,但是根据 Microsoft 的说法,如果你在生产中这样做,你可能会遇到问题。
这个问题回答了我的问题:Force IE compatibility mode off using tags
以及来自 MDN 的这篇文章META Tags and Locking in Future Compatibility
我创建了一个小的搜索功能,它将通过一堆 XML 数据并根据用户的查询提取结果,它在 Chrome 中运行顺畅,但它总是使 IE11 崩溃在用户输入大约两个字符后。
在你问之前,我正在使用直接从 MDN 复制的 .filter
的原型。我没有包括这个,因为它有效,这样做会使代码的长度加倍。
function search() {
var query = document.getElementById("query").value.toLowerCase();
returnSearch(query);
};
//loads xml data
function loadData() {
var data = new XMLHttpRequest();
data.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
getData(this);
}
};
data.open("GET", "abbreviations.xml", true);
data.send();
};
function getData(xml){
var xmlDoc = xml.responseXML;
var acronym = xmlDoc.getElementsByTagName("acronym");
for(var i=0; i < acronym.length; i++) {
content.push(acronym[i].getElementsByTagName("name")[0].childNodes[0].nodeValue + " means: "+ acronym[i].getElementsByTagName("meaning")[0].childNodes[0].nodeValue );
}
};
function returnSearch(query) {
var regexp = new RegExp(query, 'i');
//Its laughable that ie dosen't accept arrow functions
var results = content.filter(function (result) {
return regexp.test(result);
});
document.getElementById('results').innerHTML = results;
console.log(results);
};
这在 Chrome 中运行良好,所以我的问题不是如何做,而是 "why does IE not like this"。
基本上我最终使用元标记强制 IE 进入 "Edge" 模式。 IE 是如此挑剔,如果某些东西不起作用,使用这个内容标签总是一个好主意,但是根据 Microsoft 的说法,如果你在生产中这样做,你可能会遇到问题。
这个问题回答了我的问题:Force IE compatibility mode off using tags
以及来自 MDN 的这篇文章META Tags and Locking in Future Compatibility