2013-07-17 14 views
5

Sono di fronte a qualche strano bug mentre si sviluppa una webapp in jquery-mobile. Quando stimolare un'avviso, se tocco un certo input della pagina, iOS Safari & Chrome diventa completamente congelato e ho solo loro possono chiudere con il Task Manager.javascript alert congelamento browser iOS

Sono molto confuso se è colpa di Apple o è mio.

Alcuni pezzo di codice:

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

Questo è il div dell'evento:

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

E questo è uno degli ingressi:

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

Dopo l'allarme è mostrato, se voglio mettere a fuoco alcuni degli input, il browser si blocca. Quando forzo vicino Safari, questo è il messaggio che mi ha dato console:

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

Qualsiasi aiuto? Grazie

risposta

9

Sembra che ci sia un errore MAJOR nel browser iOS. Quando uso l'avviso dopo un evento onChange in un select l'avviso si apre con un pulsante OK. Fare clic sul pulsante OK non fa altro. Di fronte, l'INTERO browser si blocca. L'unica soluzione è premere il tasto home o di accensione e uccidere l'app del browser.

A partire dal 13 dicembre 2013 questo problema non è stato risolto. Ho inviato ad Apple. Altri hanno pure. Non riesco a capire perché sono così lenti a risolvere questo problema principale.

+0

Qualsiasi idea di quali circostanze perche '? Qualche soluzione alternativa o altro? – Erhannis

3

Ho utilizzato il codice inserito nella domanda e non è stato in grado di replicare il problema; Tuttavia, ho avuto problemi simili prima e ho trovato una soluzione.

Mi sono imbattuto in un problema simile quando si utilizza Mobile Safari all'interno di una visualizzazione Web in un'app nativa per iOS. Avvolgere il messaggio di avviso in un setTimout ha risolto il problema del deadlock per me. C'era una domanda posta su questo argomento ed è stato risposto qui: Calling [JSValue callWithArguments:] locks UI when alert() is called

utilizzando questa soluzione, il vostro pezzo di codice sarebbe simile a questa:

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

Il problema sembra ancora esistere a partire da agosto 2016 - Sono stato in grado di risolverlo per un prompt 'confirm' utilizzando questa soluzione. Grazie! –

Problemi correlati