尝试和捕获在IE中不起作用

时间:2017-03-05 19:11:28

标签: javascript internet-explorer

我在这个函数中有一个for each()循环,通过搜索我知道的互联网,每个循环都没有在IE中工作。 为了节省我的时间,我只需在它周围放一个:try {} catch {},但IE仍然通过函数调用提醒我,发生错误。

IE 11为何有效?的代码:

代码:

function classAndIdSpy() {

var req = new XMLHttpRequest();
var x = document.getElementsByClassName("spy");
var page_you_on = window.location.href.split("/");
var json56 = '{ "div_ids_classes" : [{"PAGE":"'+page_you_on[page_you_on.length-1]+'"},';

try {
   // Block of code to try. 
for(var xy of x) { 

json56 += '{"SPY_ID":"'+xy.id+'","CLASS":"'+xy.parentNode.className+'","ID":"'+xy.parentNode.id +'"}';

json56 += (x.length-1 > [].indexOf.call(x, xy)) ? ',' : '';

}
json56 += ']}';

req.open('POST', '../admin/id_class_colect.php', true);
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req.send("json2="+json56);

var status;
req.onreadystatechange = function() {//Call a function when the state changes.
    if(req.readyState == 4 && req.status == 200) {
        status = req.responseText;        
        console.log("Send ajax. Colected Id and Class information of content DIVs into database. Status:"+status);         
    }}
}
catch(err) {
      console.log("Your browser doesn't support ID and Class information of content DIV into database. Please use another browser.");
       return false;   
   } 
} // Endo of ClassAndIDspy

我在控制台中收到以下错误:SCRIPT1004:预期&#39 ;;' (该功能在FF中运行良好,我不认为有分号丢失)

而且,这是我希望Internet Exporer忽略的部分: 的代码:

for(var xy of x) { 

json56 += '{"SPY_ID":"'+xy.id+'","CLASS":"'+xy.parentNode.className+'","ID":"'+xy.parentNode.id +'"}';

json56 += (x.length-1 > [].indexOf.call(x, xy)) ? ',' : '';

}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您似乎误解了try - catch的观点。

trycatch用于处理JavaScript代码运行时出现的异常。您的代码无法在IE中运行,因为它无法编译。关于编译失败,trycatch无法做任何事情。

在我看来,你的选择是:

  • 使用Babel或其他一些转换器将现代JS代码转换为将在IE中运行的JS代码。
  • 使用“普通”for循环代替for (xy of x)循环。这样做并不需要付出很多努力,正如我在评论中指出的那样,for循环正在使用数组中元素的索引。

我强烈建议你放弃让IE忽略一段代码的想法。