5

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

有什么帮助吗?谢谢

4

3 回答 3

10

iOS 浏览器中似乎存在重大错误。当我在选择中的 onChange 事件后使用警报时,警报会弹出一个 OK 按钮。单击“确定”按钮不会执行任何其他操作。从表面上看,整个浏览器都被锁定了。唯一的解决办法是点击主页或电源按钮并终止浏览器应用程序。

截至 2013 年 12 月 13 日,此问题尚未修复。我已经提交给苹果了。其他人也有。我不明白为什么他们解决这个主要问题的速度如此之慢。

于 2013-12-13T16:59:46.003 回答
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);
});
于 2014-08-20T21:05:12.607 回答
0

我现在发现它没有冻结,但现在它崩溃并重新加载页面

我不得不将调用 alert(...) 更改为jquery-confirm

于 2021-07-07T12:37:23.983 回答