2014-10-02 67 views
0

我正在爲IE8開發一個網絡應用程序。IE8 JavaScript Popup「Stackoverflow at line 3」

存在的問題是:我的JavaScript/jQuery代碼顯示一個彈出式「#1在第3行」:

$(new Array(
    new Array(/\xE4/g, "ä"), //ä 
    new Array(/\xF6/g, "ö"), //ö 
    new Array(/\xFC/g, "ü"), //ü 
    new Array(/\xC4/g, "Ä"), //Ä 
    new Array(/\xD6/g, "Ö"), //Ö 
    new Array(/\xDC/g, "Ü") //Ü 
)).each(function(){ 
    $("textarea[name=remarks]").val($("textarea[name=remarks]").val().replace(this[0], this[1])); 
    $("input[name=firstname]").val($("input[name=firstname]").val().replace(this[0], this[1])); 
    $("input[name=lastname]").val($("input[name=lastname]").val().replace(this[0], this[1])); 
    alert("1"); //after popup "1" ==> stackoverflow popup appears... 
}); 
alert("2"); //is not executed 

此錯誤並只出現在IE8,在沒有其他的瀏覽器,而不是在IE 10,也沒有在其兼容模式...

有沒有人有一個解決方案?
據我所知,也沒有遞歸,對吧?

編輯:
第一次循環後不會出現錯誤消息。它出現在第六屆「1」 -popup後aktually ...

+0

控制檯是否說了更多,還是隻是彈出錯誤? – 2014-10-02 13:57:21

+0

該代碼非常非常低效。您一直在查找並寫入DOM。我並不覺得IE很驚訝。 – epascarello 2014-10-02 14:27:58

+0

Offtopic但不過。你的解決方案似乎效率很低,因爲你正在做多個DOM操作和查找,而你只需要其中的3個。 '$('textarea [name = remarks],input [name = firstname],input [name = lastname]')。each(function(){var $ this = $(this),val = $ this.val() ; val = val.replace(/(\ xE4 | \ xF6 | \ xFC | \ xC4 | \ xD6 | \ xDC)/ g,function($ 1){return'&'+ {'\ xE4':'a', ...} [$ 1] +'uml;'}); $ this.val(val)});' – 2014-10-02 14:28:33

回答

1

我真的很慚愧......

首先我注意到,甚至當我刪除,我認爲是原因的代碼中的錯誤組成。

然後我發現了錯誤的真正來源: 我的應用程序使用一個jQuery插件,它創建了一個水印輸入文本域&。

幾個星期前,我在它改變的東西作爲一個bug修正 - 而且還寫了這樣的事情:

$(...).submit(function(){ 
    ... 
    $(...).submit(); 
    ... 
}); 

==>優良的遞歸......> _ <

@Yury Tarabanko 感謝您的代碼片段。