iOS 7 safari可能的javascriptdojo修剪bug

iOS 7 safari可能的javascriptdojo修剪bug,第1张

概述自iOS 7发布以来,我们收到的订单通过输入数据末尾缺少一个字符. 例如,如果我在名称字段中输入Tanveer b Bal,它将返回Tanveer b Ba.见下面的截图: 我相信这个错误可能是由于我们在输入上使用的修剪过滤器来删除空格.我们使用dojo / _base / lang修剪函数:https://github.com/dojo/dojo/blob/1.9/_base/lang.js#L 自iOS 7发布以来,我们收到的订单通过输入数据末尾缺少一个字符.

例如,如果我在名称字段中输入Tanveer b Bal,它将返回Tanveer b Ba.见下面的截图:

我相信这个错误可能是由于我们在输入上使用的修剪过滤器来删除空格.我们使用dojo / _base / lang修剪函数: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*$/,''); }

还有其他人遇到过这个问题吗?

重现说明

>访问http://demo.zoopcommerce.com
>加入购物车
>结帐
>输入电子邮件地址和名称,然后单击下一步
>电子邮件地址现在可能缺少最后一个字符

更新:

我在这里创建了一个修剪测试器:http://jsfiddle.net/QJFBL/embedded/result/但它似乎在iOS 7上工作正常.(创建了另一个具有更多依赖项:http://jsfiddle.net/qmKvZ/8/)

我也尝试在http://crossbrowsertesting.com/上的iOS 7 VM上实现我的实现,并再次起作用.

更新2:
http://www.browserstack.com/今天发布了iOS7 VM.我试过我的收银台,结果喜忧参半.有时错误发生,有时不发生.但是,在一个简单的剥离版本http://jsfiddle.net/qmKvZ/9/embedded/result/上,该BUG仍然没有出现,这让我觉得可能存在更深层次的问题?

解决方法 我无法100%确认为什么在iOS端发生这种情况,但我可以确认修复.

从我所知道的(调试能力非常有限),当自动完成显示在输入上时,它不会传播最后一个按键事件.由于dijit只监视keydown,keypress,paste,cut,input,compositionend事件,因此输入的最后一个字符有时会被遗漏.

要修复此错误,请修改以下行:https://github.com/dojo/dijit/blob/1.9/form/_TextBoxMixin.js#L347:

this.own(on(this.textBox,"keydown,compositionend",lang.hitch(this,handleEvent)));

this.own(on(this.textBox,keyup,handleEvent)));

基本上你只是添加了keyup事件.一定不要以类似处理按键和键控的方式处理它,例如. https://github.com/dojo/dijit/blob/1.9/form/_TextBoxMixin.js#L238

我也会向dojo团队提交错误修复/问题.

总结

以上是内存溢出为你收集整理的iOS 7 safari可能的javascript / dojo修剪bug全部内容,希望文章能够帮你解决iOS 7 safari可能的javascript / dojo修剪bug所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1074501.html

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

发表评论

登录后才能评论

评论列表(0条)

保存