2014-12-23 104 views
0

我想是指在我這裏彈出窗口http://www.globalrph.com/davescripts/popup.htmjavascript:如何從window.opener訪問window.top?

在彈出來window.top一次我要訪問主窗口的文檔,但window.top被返回undefined。

+0

你應該真的包括你在這裏工作的代碼。爲什麼不在生成它時將你需要的信息從主窗口傳遞到彈出窗口? – quid

+0

您正在尋找'window.opener',也許。它指的是打開當前窗口的窗口。 –

回答

1

訪問彈出窗口的開啓者使用。

window.opener 

要訪問您的揭幕戰的頂部(例如,您的揭幕戰是在iframe)

window.opener.top 

一旦你想你可以訪問文檔,以改變它的上下文開門紅窗口,位置操縱URL等

+0

有沒有辦法設置'window.top = window.opener.top'?真的很討厭必須通過我所有的代碼才能創建一個單獨的條件來將window.top替換爲window.opener.top。 – user299709

+0

不是每個窗口都有它自己的「頂級」屬性,如果你重新映射了這些屬性(如果可能的話),它可能會讓人感到困惑,因爲它指向其「祖父母最多」的父級(不包括開啓者)。你可以設置別的東西,例如window.ot = window.opener.top;儘管這不會讓你獲得太多,並且如果在沒有開啓器的頁面上使用,可能會在控制檯中顯示錯誤。 – scunliffe

0

如果你想你的彈出式移動到相同的頂部位置打開瀏覽器窗口,水平居中開口瀏覽器窗口的大小,在現代瀏覽器,你可以使用:

window.moveTo(window.opener.screenX + (window.opener.outerWidth/2) - (window.outerWidth/2), window.opener.screenY) 

outerWidth和screenX和screenY在IE9及更高版本和現代瀏覽器中工作。

moveTo已經存在很長時間了。

在這種情況下,我們正在打開瀏覽器窗口的左側位置,計算其中心並減去彈出窗口寬度的一半。這給了中心位置。然後,我們使用window.opener.screenY來獲取打開瀏覽器窗口的頂部位置,並將彈出窗口的頂部設置爲相同。

許多瀏覽器都默認打開彈出式窗口攔截器,並要求用戶單擊鏈接打開彈出窗口。我有這個Web應用程序打開一個彈出窗口來預覽結果。很多Web應用程序都使用定位的div來進行對話。不知道你的申請,我真的不能就最好的方法提供建議。