问题是我们的用户名中有撇号的用户.在iOS 11上键入他们的用户名,而不知道unicode的细微之处,他们无法登录.
理想情况下,我们可以通过按住撇号键来指示此类用户禁用智能引号或键入正确的字符 – 但我正在为小孩子制作教育软件,这是不可能的.
问题更加复杂的是,用户名中只有少量用户选择实际的单引号,因此简单的替换地图将无效 – 我们无法规范化用户名,因为它们来自一个数字我们无法控制的外部系统/不能说很多.
解决方法 不幸的是,根据 this MDN page,没有已知的Webkit< input>.或< textarea>用于禁用智能引号的属性,但您可以使用我从此QA派生的脚本对其进行修补: How to disable smart quotes for textarea fields in the browser?window.addEventListener('DOMContentLoaded',attachFilterToinputs );function attachFilterToinputs() { var textinputs = document.querySelectorAll( 'input[type=text],input[type=[password],input[type=email],input[type=search],input[type=url],textarea,*[contenteditable=true]' ); for( var i = 0; i < textinputs.length; i++ ) { textinputs[i].addEventListener( 'keypress',preventPretentIoUsPunctuation ); } }var conversionMap = createConversionMap;function createConversionMap() { var map = {}; // Open-quotes: http://www.fileformat.info/info/unicode/category/Pi/List.htm map[ 0x2018 ] = '\''; map[ 0x201B ] = '\''; map[ 0x201C ] = '"'; map[ 0x201F ] = '"'; // Close-quotes: http://www.fileformat.info/info/unicode/category/Pf/List.htm map[ 0x2019 ] = '\''; map[ 0x201D ] = '\"'; // Primes: http://www.fileformat.info/info/unicode/category/Po/List.htm map[ 0x2032 ] = '\''; map[ 0x2033 ] = '"'; map[ 0x2035 ] = '\''; map[ 0x2036 ] = '"'; map[ 0x2014 ] = '-'; // iOS 11 also replaces dashes with em-dash map[ 0x2013 ] = '-'; // and "--" with en-dash return map;}function preventPretentIoUsPunctuation( event ) { if( event.key.length != 1 ) return; var code = event.key.codePointAt(0); var replacement = conversionMap[ code ]; if( replacement ) { event.preventDefault(); document.execCommand( 'insertText',replacement ); }}总结
以上是内存溢出为你收集整理的iOS 11 Safari HTML – 禁用“智能标点符号”?全部内容,希望文章能够帮你解决iOS 11 Safari HTML – 禁用“智能标点符号”?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)