我在jquery-mobile中开发webapp时遇到了一些奇怪的错误。 当我提示警报时,如果我触摸该页面的某些输入,iOS Safari& Chrome完全冻结,我只能通过任务管理器关闭它们。
如果它是苹果故障或我的确是非常困惑。
一些代码:
$('.checkout-comprar-button').click(function(){
alert("hola!!!");
});
这是事件的div:
<div class="grp-bottombar-button checkout-comprar-button" style="width: 50% !important; float: right !important; display: block !important; padding-top: 12px;">
<span class="green-desplegable grp-bottombar-button-text">
<? echo _("checkoutcreditcard.seguircompra"); ?>
</span>
</div>
这是其中一项投入:
<div class="checkout-datos-numero checkout-first-form checkout-form-field-container">
<div class="checkout-field">
<input type="tel" placeholder="<? echo _('creditcard.numero'); ?>" name="" id="checkout-num-tarjeta" maxlength="30" />
</div>
</div>
显示警告后,如果我想要关注某些输入,浏览器会冻结。 当我强制关闭Safari时,这是控制台给我的消息:
<Warning>: MobileSafari[2985] has active assertions beyond permitted time:
{(
<BKProcessAssertion: 0x1e857480> identifier: Suspending process: MobileSafari[2985] permittedBackgroundDuration: 10.000000 reason: suspend owner pid:26 preventSuspend preventThrottleDownCPU preventThrottleDownUI
)}
<Warning>: Forcing crash report of MobileSafari[2985]...
有任何帮助吗? 谢谢
答案 0 :(得分:10)
iOS浏览器中似乎存在一个主要错误。当我在选择的onChange事件后使用警报时,会弹出一个OK按钮。单击“确定”按钮不会执行任何其他操作。面对面,整个浏览器锁定。唯一的解决方案是点击主页或电源按钮并终止浏览器应用程序。
截至2013年12月13日,此问题尚未解决。我已经提交给了Apple。其他人也有。我无法弄清楚为什么他们如此缓慢地解决这个主要问题。
答案 1 :(得分:4)
我使用了问题中发布的代码而无法复制问题;但是,我之前遇到过类似的问题并找到了解决方案。
在本机iOS应用中的Web视图中使用Mobile Safari时遇到了类似的问题。在setTimout中包装警报消息解决了我的死锁问题。关于这个主题有一个问题,在这里得到了回答:Calling [JSValue callWithArguments:] locks UI when alert() is called
使用此解决方案,您的代码将如下所示:
$('.checkout-comprar-button').click(function(){
window.setTimeout(function () {alert("hola!!!");},0);
});
答案 2 :(得分:0)
我发现它现在没有冻结,但现在它崩溃并重新加载页面
我不得不将调用 alert(...) 更改为 jquery-confirm