这个JavaScript一直崩溃IE

时间:2018-04-11 20:05:23

标签: javascript internet-explorer-11

我创建了一个小型搜索功能,它将浏览大量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中运行良好,所以我的问题不再是“为什么IE不喜欢这个”。

1 个答案:

答案 0 :(得分:0)

基本上我最终使用元标记强制IE进入“边缘”模式。 IE是如此挑剔,如果某些东西不起作用,最好使用这个内容标签,但是根据微软的说法,如果你在生产中这样做,可能会遇到问题。

这个问题回答了我的问题:Force IE compatibility mode off using tags

以及来自MDN META Tags and Locking in Future Compatibility

的这篇文章