2010-08-30 20 views
5

Sto avendo un comportamento strano sul mio emulatore Android. window.open() restituisce sempre undefined quando chiamato da setTimeout o funzione di callback, ad es. Callback AJAX. Comunque window.open() apre con successo un popup quando chiamato da un gestore di eventi, ad es. onclick qui è codice di esempio:window.open() restituisce undefined quando viene chiamato da setTimeout su Android

<html> 
 
<head> 
 
</head> 
 
    <body> 
 
    <script type="text/javascript"> 
 
    function fnc() 
 
    { 
 
     setTimeout(function() { alert(window.open('about:blank')) }, 100); 
 
    } 
 
    </script> 
 
    <input type="button" onclick="fnc()" value="push me"> 
 
    </body> 
 
</html>

Nel avviso esempio (window.open ('about: blank')) mostra 'undefined' e il pop-up non viene creato La stessa funzione funziona quando chiamato direttamente da FNC()

Qualche idea?

Grazie

+0

ho il sospetto che è solo normale comportamento di blocco popup. – Pointy

+0

Sto riscontrando lo stesso problema con javascript in un'app Xul, quindi non è il problema di Android. Ti suggerisco di rimuovere il tag Android. –

+0

@Pointy non lo è, lo stesso problema qui in un'app desktop (usando Xul) –

risposta

3

provare quanto segue:

<html> 
 
    <head> 
 
     <script type="text/javascript"> 
 
      function go(){ 
 
       window.open('about:blank'); 
 
      } 
 
      function fnc() 
 
      { 
 
       var buttonnode= document.createElement('input'); 
 
       buttonnode.setAttribute('type','button'); 
 
       buttonnode.setAttribute('name','sal'); 
 
       buttonnode.setAttribute('style','display:none;'); 
 
       document.body.appendChild(buttonnode); 
 

 
       buttonnode.onclick = go; 
 

 
       setTimeout(function() { buttonnode.click() }, 100); 
 
      } 
 
     </script> 
 
    </head> 
 
    <body> 
 
    <input type="button" onclick="fnc()" value="do later"><br/> 
 
    </body> 
 
</html>

+0

intendi 'return window.open ('about: blank');' inside 'go()'? –

+0

comunque, non ha funzionato per me .. –

+0

Il codice sopra riportato funziona per me su dispositivi Android 2.2 - si badi che è un po 'un hack ... – Dror

Problemi correlati