2015-10-13 32 views
1

在下面的提琴中,window.focus();似乎什麼都不做。有任何想法嗎?window.focus()對父窗口不起作用

例如:

childwindow.focus(); 
window.focus(); 

當上面的代碼運行時,childwindow保持專注,我怎麼焦點返回到父窗口?

https://jsfiddle.net/51bc33kr/9/

+0

這種通常在瀏覽器中被禁用,否則每個打開的網頁都可以選擇從活動窗口中竊取焦點。 –

+0

我知道,這是一個內部的Web應用程序。 –

回答

1

你沒有打開父窗口,所以你無法控制它。說實話沒什麼好說的。只有打開後才能控制它。一個選項可能是打開3個窗口,單獨保留原始窗口並擁有新的父窗口。

看到這個更新的小提琴 - >

http://jsfiddle.net/51bc33kr/12/

$("#openwindows").click(function() { 
    google = window.open("https://www.google.com", ""); 
    yahoo = window.open("https://www.yahoo.com", ""); 
    parent = window.open("about:blank", ""); 
}); 

$("#focusYahoo").click(function() { 
    google.focus(); 
    yahoo.focus(); 
}); 

$("#focusGoogle").click(function() { 
    yahoo.focus(); 
    google.focus(); 
}); 

$("#focusHome").click(function() { 
    google.focus(); 
    parent.focus(); 
}); 

注:爲了增加我的回答以上。只有一個念頭。我看到了您想要完成的操作類型,如果這是內部的,就像公司一樣,我強烈建議使用瀏覽器擴展。他們很容易(和樂趣!),並給你你想要的控制。

+0

我想這是有道理的,也許瀏覽器擴展是正確的路要走。儘管如此,我可以打開新窗口並控制其焦點,但是我無法控制原始窗口的焦點嗎?那麼,謝謝你讓我知道這裏的侷限性。 –

+0

隨時發芽。請記住,這是以這種方式設置的,所以網站不能故意惹惱你。製作一個內部應用程序時,它有點糟糕。我遇到了很多像這樣的邊緣案例。有時候,Chrome會使用標誌來減少惱人的事情(比如鉻標誌忽略本地站點上的SSL警告),但並不經常。 – Jesse

+0

無法單擊打開多個窗口(至少)。 –