javascript警告冻结iOS浏览器

时间:2013-07-17 10:00:50

标签: javascript safari mobile-safari alert freeze

我在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]...

有任何帮助吗? 谢谢

3 个答案:

答案 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