Safari ReferenceError:找不到变量:设置

问题描述:

我从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://*.com/questions/43351621/check-pressed-space-then-add-diez-tag-using-jquery-with-multilanguage ) – Azzo

使用数组来代替

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://*.com/questions/43351621/check-压空间,然后加 - 迪茨标签的使用,jQuery的用的多语言) – Azzo