[英]set the focus of a popup window every time
我有兩頁 one.html 和 two.html
我正在使用以下代碼打開一個新窗口
//here popup is a global variable
popup=window.open('two.html','two');
第一次彈出窗口成功打開並獲得焦點,但如果我嘗試再次打開它而不關閉已打開的彈出窗口,那么 two.html 不會第二次獲得焦點。
注意:我已將彈出窗口的名稱設置為“兩個”
您可以使用下面使用的focus
功能來實現
<script language="javascript" type="text/javascript">
<!--
function popitup(url) {
newwindow=window.open(url,'name','height=200,width=150');
if (window.focus) {newwindow.focus()}
if (!newwindow.closed) {newwindow.focus()}
return false;
}
// -->
</script>
focusedWindow = window.open('two.html','two').focus();
直接將 focus() 附加到 window.open 原型
我的經驗解決方案始終有效:
setTimeout('detail.focus()', 1);
在打開后立即附加.focus()
並不總是有效,也不總是在沒有 setTimeout 的情況下調用.focus()
。
我知道它很丑(我想現在擺脫它,幾年后,沒有成功),我不知道為什么和如何的確切原因,但它有效。
如果在調用該函數時檢查彈出窗口是否已經打開,則可以在打開它之前關閉該彈出窗口。
var popup;
function openPop() {
if ("close" in popup) popup.close();
popup = window.open("http://stackoverflow.com", "test", "width=200, height=200");
}
這將確保彈出窗口始終顯示在頂部。
var win = window.open('two.html','two');
win.document.getElementsByTagName("body")[0].focus(); //focus the body rather than the window.
檢查您的 Firefox 2 設置
如果關閉“升高或降低窗口”設置,則會禁用 window.focus() 方法。
我為自己找到了一個有效的答案。 在彈窗正文的 html 中,添加到正文標記 onload="this.window.focus()"。 即使您最小化窗口,它也會從前面和中間彈出。 確保並在執行腳本中命名窗口 window.open('url','some name','vars'); 希望這對你有幫助!
不幸的是,一些現代瀏覽器仍然不支持聚焦選項卡,例如,請參閱此 Firefox 錯誤條目。
但是,以下代碼對我來說效果很好。 作為一種解決方法,如果無法聚焦,它會重新打開窗口/選項卡:
var win = window.open("two.html", "two")
win.focus();
setTimeout(function() {
if(document.hasFocus()) {
win.close();
window.open("two.html", "two")
}
}, 1);
在第一行中,它打開窗口並嘗試使用第二行將其聚焦。 如果名稱為two
的窗口已經存在,則不會打開新窗口/選項卡,但會重復使用它。
現在的技巧是,我們使用document.hasFocus()
檢查當前窗口是否仍然具有焦點。 如果是這樣,我們關閉窗口並重新打開它。 這僅適用於不支持聚焦要直接重用的選項卡的瀏覽器。 目前,FF 和 IE/MS Edge 就是這種情況。 鉻效果很好。
然而,直接在使用window.open
, document.hasFocus()
總是返回 true (如此說,也在 Chrome 中)。 解決方法是在一毫秒后使用setTimeout
。
只需將 .focus() 添加到 window.open 行window.open('two.html','two').focus()
我確實遇到了同樣的問題,這似乎在 Firefox 和 Chromium 網絡瀏覽器中都有效。 在我的網站thaiiceland.com 中,我注意到如果彈出窗口是打開的,焦點不會放在彈出窗口上,當您單擊該鏈接時,您會感覺沒有任何反應。 所以我搜索並嘗試在 window.open 行的末尾添加 .focus() 之后它就可以工作了。
<a href="currency.html" onclick="javascript:void window.open('currency.html','thaiice02','width=900,height=560,scrollbars=1,resizable=1,top=80,left=150').focus();return false;">Curency converter - แปลงสกุลเงิน</a>
setTimeout(function () {
window.open('PageName', '', 'height=560,width=1120,resizable=no,left=100,top=50,screenX=100,screenY=50');
}, 100);
-> 此代碼用於將焦點放在新打開的窗口上。 -> 把它放在javascript.('setTimeout 是javascript 的內置函數') -> 很多時候,當彈出窗口打開時,它會跑到舊窗口的后面,所以上面對新窗口的焦點非常有用。
這是一個單行解決方案,使用焦點在你的彈出變量上:
popup=window.open('two.html','two');
popup.focus();
即使它沒有關閉,這也將始終打開您的彈出窗口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.