2010-08-30 48 views
5

我的Android模擬器有奇怪的行爲。當從setTimeout或回調函數調用時,window.open()總是返回undefined。 AJAX回調。然而,window.open()在事件處理程序中調用時會成功打開一個彈出窗口,例如的onclick 這裏是示例代碼:從Android上的setTimeout調用時,window.open()返回undefined

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

在該示例警報(window.open( '關於:空白'))顯示 '未定義' 和彈出不創建 相同的功能作品時,直接從fnc調用()

任何想法?

感謝

+0

我懷疑這只是普通的彈出式窗口攔截行爲。 – Pointy 2010-08-30 14:19:51

+0

我在Xul應用程序中遇到了與JavaScript相同的問題,所以它不是Android的問題。我建議你刪除Android標籤。 – 2011-01-11 18:34:09

+0

@點它不是,在桌面應用程序(使用XUL)這裏相同的問題 – 2011-01-11 19:45:13

回答

3

嘗試以下操作:

<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

您的意思是'return window.open('about:blank');''go' – 2011-01-11 18:40:12

+0

無論如何,它並沒有爲我工作.. – 2011-01-11 18:42:47

+0

上述代碼適用於我在Android 2.2設備上 - 請注意,它是有點黑客... – Dror 2011-01-12 12:24:35