2013-07-17 2 views
5

Я столкнулся с какой-то странной ошибкой при разработке webapp в jquery-mobile. Когда я запрашиваю предупреждение, если я коснусь некоторого ввода страницы, iOS Safari & Chrome полностью замораживается, и я могу закрыть их только с помощью диспетчера задач.javascript alert freezing iOS Браузеры

Я очень смущен, если это ошибка яблока или это мое.

Некоторые кусок кода:

$('.checkout-comprar-button').click(function(){     
    alert("hola!!!"); 
}); 

Это ДИВ события:

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

Любая помощь? Спасибо

ответ

9

В браузере iOS появляется ОСНОВНАЯ ошибка. Когда я использую оповещение после события onChange при выборе, появляется предупреждение с кнопкой OK. Нажатие кнопки «ОК» ничего не делает. На первый взгляд, браузер ENTIRE блокируется. Единственное разрешение - нажать кнопку дома или питания и убить приложение браузера.

По состоянию на 13 декабря 2013 года эта проблема не исправлена. Я отправился в Apple. Другие тоже. Я не могу понять, почему они так медленно исправляют эту ОСНОВНУЮ проблему.

+0

Любая идея, что обстоятельства причиной этого? Любые обходные пути или что-то еще? – Erhannis

3

Я использовал код, отправленный в вопрос, и не смог воспроизвести проблему; Тем не менее, у меня были подобные проблемы раньше и нашли решение.

У меня возникла аналогичная проблема при использовании Mobile Safari внутри веб-представления в приложении для iOS. Обертка сообщения предупреждения в setTimout решила проблему взаимоблокировки для меня. Был вопрос, заданный на эту тему, и он ответил здесь: Calling [JSValue callWithArguments:] locks UI when alert() is called

Используя это решение, ваш кусок кода будет выглядеть следующим образом:

$('.checkout-comprar-button').click(function(){     
    window.setTimeout(function() {alert("hola!!!");},0); 
}); 
+0

Проблема по-прежнему существует с августа 2016 года - я смог исправить ее для запроса 'confirm', используя это решение. Благодаря! –