2010-08-30 9 views
5

J'ai un comportement étrange sur mon émulateur Android. window.open() renvoie toujours undefined lorsqu'il est appelé depuis la fonction setTimeout ou la fonction de rappel, par ex. Rappel AJAX. Cependant, window.open() ouvre avec succès un popup lorsqu'il est appelé depuis un gestionnaire d'événements, par ex. onclick ici est un exemple de code:window.open() renvoie undefined lorsqu'il est appelé depuis setTimeout sur 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>

Dans l'alerte exemple (window.open ('about: blank')) montre 'non défini' et le menu contextuel n'est pas créé La même fonction fonctionne lorsqu'il est appelé directement à partir de fnc()

Des idées?

Merci

+0

Je soupçonne que c'est tout à fait normal le comportement de blocage de popups. – Pointy

+0

J'ai ce même problème avec javascript dans une application Xul, donc ce n'est pas le problème d'Android. Je vous suggère de supprimer la balise Android. –

+0

@Pointy ce n'est pas, même problème ici dans une application de bureau (en utilisant Xul) –

Répondre

3

les opérations suivantes:

<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

vous voulez dire 'return window.open ('about: blank');' inside 'go()'? –

+0

de toute façon, cela n'a pas fonctionné pour moi .. –

+0

Le code ci-dessus fonctionne pour moi sur les appareils android 2.2 - attention, c'est un peu un hack ... – Dror

Questions connexes