2012-12-20 38 views
6

我正在使用window.open從父窗口打開子窗口。我希望子窗口保持在最頂層,以便用戶可以在父窗口中輸入時引用它。這可以做到嗎?目前我正在使用Firefox,但如果它在所有瀏覽器中都可以使用,那將會是一個好處。如何讓孩子的窗戶在上面?

+0

您可以專注於新窗口,但是您將無法在父窗口中鍵入或執行任何操作。 –

+3

如何使用[彈出div](http://jqueryui.com/dialog/#default)而不是打開一個新窗口? – 3dgoo

+1

這是你可以用windows做的最好的:http://jsfiddle.net/DerekL/WFsyY/ –

回答

1

如何使用popup div,而不是開放的一個新窗口?

+1

BOOM!搞定了。 –

+2

問題在於,您無法在父窗口之外移動HTML彈出窗口。 – UrbKr

1

這個彈出層也不錯:DOMWindowDemo

+0

http://stackoverflow.com/questions/how-to-answer –

+0

我要+1,因爲我知道它有一天會派上用場,儘管它們都不是我想要完成這項任務的。 –

0

是的,你可以通過這個代碼,你必須給的onblur =「self.focus()」中體子窗口做到這一點

//Parent page... 
    <html> 
     <body> 
     <a href="#" onClick="window.open('two.html','sdvwsv','width=200,height=200');">here...</a> 
     </body> 
    </html> 


    //Child page... 
     <html> 
      <body onBlur="self.focus();"> 
       here... 
       </body> 
      </html> 
+0

這似乎並不像我期待的那樣工作,當我單擊回到父窗口時,子窗口會丟失。 –

+0

這裏的問題是將內容從孩子寫到父母那麼它足夠了,當沒有父母的時候就沒有孩子存在。 –

0
<html> 
    <script language="JavaScript"> 
    <!-- 
    function openWin(){ 
     var myBars = 'directories=no,location=no,menubar=no,status=no'; 

     myBars += ',titlebar=no,toolbar=no'; 
     var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no,top=10, left=10,'; 
     var myFeatures = myBars + ',' + myOptions; 
     var myReadme = 'This is a test.' 

     var newWin = open('', 'myDoc', myFeatures); 

     newWin.document.writeln('<form>'); 
     newWin.document.writeln('<table>'); 
     newWin.document.writeln('<tr valign=TOP><td>'); 
     newWin.document.writeln('<textarea cols=45 rows=7 wrap=SOFT>'); 
     newWin.document.writeln(myReadme + '</textarea>'); 
     newWin.document.writeln('</td></tr>'); 
     newWin.document.writeln('<tr><td>'); 
     newWin.document.writeln('<input type=BUTTON value="Close"'); 
     newWin.document.writeln(' onClick="window.close()">'); 
     newWin.document.writeln('</td></tr>'); 
     newWin.document.writeln('</table></form>'); 
     newWin.document.close(); 
     newWin.focus(); 
    } 
    --> 
    </script> 
    <body> 
    <form> 
     <b>Click the following button to open a new window: </b> 
     <input type=BUTTON value="Open" onClick='openWin()'> 
    </form> 
    </body> 
+0

謝謝你的回覆,但這不是我想要的。這會創建一個帶有文本框的新窗口,但當我單擊父窗口時仍會丟失。我希望子窗口保持在最頂層,以便用戶可以在父窗口中輸入時引用它。 –

0
<html> 
    <script language="JavaScript"> 
    <!-- 
    function openWin(){ 
     var myBars = 'directories=no,location=no,menubar=no,status=no'; 
     myBars += ',titlebar=no,toolbar=no'; 
     var myOptions = 'scrollbars=no,width=600,height=400,resizeable=no,top=10, left=10'; 
     var myFeatures = myBars + ',' + myOptions; 
     var newWin = open('test.html', '', myFeatures); 
     newWin.document.close(); 
     newWin.focus(); 
    } 
    --> 
    </script> 
    <body> 
    <form> 
     <b>Click the following button to open a new window: </b> 
     <input type=BUTTON value="Open" onClick='openWin()'> 
    </form> 
    </body> 
</html> 
    </html> 
+0

謝謝,但我不確定你明白我想要什麼。 「我希望子窗口保持最佳狀態,以便用戶可以在父窗口中輸入時引用它。」 –

0

我摔了很久。這似乎是FF中的一個錯誤,但我注意到,在新窗口打開後,如果點擊它,它確實得到了重點並進入頂端。然而,調用window.focus()不起作用,所以我猜想它發生得太早。

在新窗口代碼

所以,在頁面的底部,我添加

setTimeout(function(){window.focus()},100); 

感覺並不像固體的做法,但如果你需要它的工作... 的100毫秒似乎是最低的工作在我的系統上。

+0

此外,它似乎只有在open()請求是由insaide事件處理程序創建時纔有效。此外,事件處理程序必須位於一個本身可以接受焦點的對象上,例如輸入元素等。 –

+0

即使您可以將事件處理程序附加到諸如div之類的東西,它們也不能接受焦點,因此上述內容對它們不起作用。 –