2010-08-30 28 views
5

Tengo un comportamiento extraño en mi emulador de Android. window.open() siempre devuelve indefinido cuando se llama desde setTimeout o la función de devolución de llamada, p. Devolución de llamada AJAX. Sin embargo, window.open() abre con éxito una ventana emergente cuando se llama desde un controlador de eventos, p. onclick aquí es código de ejemplo:window.open() devuelve indefinido cuando se llama desde setTimeout en 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>

En la alerta ejemplo (window.open ('about: blank')) muestra 'indefinido' y la ventana emergente no se crea La misma función funciona cuando se llama directamente desde fnc()

¿Alguna idea?

Gracias

+0

sospecho que es un comportamiento simplemente normal bloqueo de ventanas emergentes. – Pointy

+0

Tengo este mismo problema con javascript en una aplicación Xul, por lo que no es un problema de Android. Te sugiero que elimines la etiqueta de Android. –

+0

@Pointy no es, el mismo problema aquí en una aplicación de escritorio (usando Xul) –

Respuesta

3

Pruebe lo siguiente:

<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

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

+0

de todos modos, no funcionó para mí .. –

+0

El código anterior funciona para mí en los dispositivos con Android 2.2. Tenga en cuenta que es algo así como un truco ... – Dror

Cuestiones relacionadas