iOS 11 Safari HTML – 禁用“智能标点符号”?

iOS 11 Safari HTML – 禁用“智能标点符号”?,第1张

概述是否有一种很好的方法可以禁用iOS 11 Apple键盘生成的“智能标点符号” – 在 HTML登录表单的Safari中 – 特别是用户名字段? 问题是我们的用户名中有撇号的用户.在iOS 11上键入他们的用户名,而不知道unicode的细微之处,他们无法登录. 理想情况下,我们可以通过按住撇号键来指示此类用户禁用智能引号或键入正确的字符 – 但我正在为小孩子制作教育软件,这是不可能的. 问题更加 是否有一种很好的方法可以禁用iOS 11 Apple键盘生成的“智能标点符号” – 在 HTML登录表单的Safari中 – 特别是用户名字段?

问题是我们的用户名中有撇号的用户.在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 – 禁用“智能标点符号”?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1060115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存