2017-07-25 92 views
0

我從Safari瀏覽器中獲取Safari ReferenceError: Can't find variable: Set錯誤。我檢查了其他瀏覽器,但我沒有得到任何這個錯誤所有的代碼爲我工作得很好。Safari ReferenceError:找不到變量:設置

有沒有人可以幫助我在這裏什麼是錯誤的,什麼是從所有瀏覽器工作我的代碼的解決方案?

Demo

問題行

var charactersX = new Set([ 
     0, 
     32, // space 
     13 // enter 
     // add other punctuation symbols or keys 
    ]); 
    // Convert characters to charCode 
    function toCharCodeX(char) { 
     return char.charCodeAt(0); 
    } 

    var forbiddenCharactersX = new Set([ 
     toCharCodeX("_"), 
     toCharCodeX("-"), 
     toCharCodeX("?"), 
     toCharCodeX("*"), 
     toCharCodeX("\\"), 
     toCharCodeX("/"), 
     toCharCodeX("("), 
     toCharCodeX(")"), 
     toCharCodeX("="), 
     toCharCodeX("&"), 
     toCharCodeX("%"), 
     toCharCodeX("+"), 
     toCharCodeX("^"), 
     toCharCodeX("#"), 
     toCharCodeX("'"), 
     toCharCodeX("<"), 
     toCharCodeX("|"), 
     toCharCodeX(">"), 
     toCharCodeX("."), 
     toCharCodeX(","), 
     toCharCodeX(";") 
    ]); 
+0

您正在使用什麼版本的Safari?它已經或多或少[從版本7.1開始支持](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#Browser_compatibility) –

+0

@RobM。嗯,我明白了。那麼您是否有任何想法來解決桌面和移動設備等所有瀏覽器的問題? – Azzo

+0

@RobM。如果你有任何想法,你可以回答這個賞金[問題](https://stackoverflow.com/questions/43351621/check-pressed-space-then-add-diez-tag-using-jquery-with-multilanguage ) – Azzo

回答

1

使用數組來代替

var charactersX = [ 
    0, 
    32, // space 
    13 // enter 
    // add other punctuation symbols or keys 
]; 

並更換.has(),例如在這裏:

if (charactersX.has(code)) 

if (charactersX.indexOf(code) > -1) 

if (forbiddenCharactersX.has(code)) 

indexOf > -1太...

+0

你的代碼工作正常。感謝它。但我有一個問題,如果你有時間請回答我。我已經使用CharcodeAt(0);在第76行的演示中,在移動設備上處理我的代碼。但它不適用於移動設備。這裏有什麼問題?你可以查看我的問題[DEMO](https://codepen.io/shadowman86/pen/RZwrzQ) – Azzo

+0

你的筆中有charCodeAt(0),這不應該是移動設備上的問題。如果你有更多的錯誤,隨時提出一個新的問題,幷包括詳細信息@DevStud – baao

+0

我從這裏包括一個賞金問題關於我的評論問題[這裏](https://stackoverflow.com/questions/43351621/check-壓空間,然後加 - 迪茨標籤的使用,jQuery的用的多語言) – Azzo

相關問題