Jos*_*art 5 javascript safari dojo ios ios7
自iOS 7发布以来,我们收到的订单通过输入数据末尾缺少一个字符.
例如,如果我进入Tanveer b Bal
名称字段,它将返回Tanveer b Ba
.见下面的截图:
我相信这个错误可能是由于trim
我们在输入上使用的过滤器来删除空格.我们使用的dojo/_base/lang
trim
功能:https://github.com/dojo/dojo/blob/1.9/_base/lang.js#L510
String.prototype.trim ? function(str){ return str.trim(); } : function(str){ return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); }
Run Code Online (Sandbox Code Playgroud)
还有其他人遇到过这个问题吗?
重现说明
更新:
我在这里创建了一个修剪测试器:http://jsfiddle.net/QJFBL/embedded/result/但它似乎在iOS 7上工作正常.(创建了另一个具有更多依赖项的:http://jsfiddle.net/qmKvZ/8 /)
我也尝试在http://crossbrowsertesting.com/上的iOS 7虚拟机上实现我的实现,并再次起作用.
更新2: http : //www.browserstack.com/今天发布iOS7虚拟机.我试过我的收银台,结果喜忧参半.有时错误发生,有时不发生.但是,在一个简单的剥离版 http://jsfiddle.net/qmKvZ/9/embedded/result/上,这个bug仍然没有出现,这让我觉得可能有更深层次的问题?
我无法100%确认为什么在iOS端发生这种情况,但我可以确认修复.
从我所知道的(调试能力非常有限),当自动完成显示在输入上时,它不会传播最后一个keypress
事件.由于dijit
只监视keydown, keypress, paste, cut, input, compositionend
事件,有时可能会错过输入的最后一个字符.
要修复此错误,请修改以下行:https://github.com/dojo/dijit/blob/1.9/form/_TextBoxMixin.js#L347 from:
this.own(on(this.textbox, "keydown, keypress, paste, cut, input, compositionend", lang.hitch(this, handleEvent)));
Run Code Online (Sandbox Code Playgroud)
至
this.own(on(this.textbox, "keydown, keypress, keyup, paste, cut, input, compositionend", lang.hitch(this, handleEvent)));
Run Code Online (Sandbox Code Playgroud)
基本上你只是添加keyup
事件.一定不要以它处理的类似方式处理它keypress
,keydown
例如.https://github.com/dojo/dijit/blob/1.9/form/_TextBoxMixin.js#L238
我也会向dojo
团队提交错误修复/问题.
归档时间: |
|
查看次数: |
732 次 |
最近记录: |