2013-06-04 48 views
0

有沒有辦法獲取彈出窗口的URL /位置?無法獲取彈出窗口的URL /位置

CODE:

<html> 
    <head> 
    <script> 
    function openWin() 
    { 
     myWindow=window.open('http://www.google.com','','width=200,height=100'); 
     console.debug(myWindow.location.href); 
     console.debug(window.location.href); 
    } 
    </script> 
    </head> 

    <body> 
    <input type="button" value="Open window" onclick="openWin()" /> 
    </body> 
</html> 

第一個控制檯打印about:blank

雖然第二控制檯打印當前頁面的URL(即上面的代碼的URL,它不打印彈出的網址)

爲什麼不是第一個控制檯打印位置(即http://www.google.com)?

任何人都可以幫我解決這個問題嗎?

在此先感謝。

回答

0

由於瀏覽器安全性阻止您從與您的腳本不在同一個域中的任何窗口獲取URL。所以,如果你的代碼在example.com上運行,你只能得到example.com上任何窗口的URL。

1

正如@ Hg3所說,您無法訪問location.hrefmyWindowwindow.open返回空的DOMWindow

但是,您可以覆蓋window.open並維護打開的所有窗口的簡單數組。

//override window.open 
var windows = []; 
window._open = window.open; 
window.open = function(url, name, params){ 
    windows.push(name, url); 
    return window._open(url, name, params) 
} 
//function return href by name 
function hrefByName(name) { 
    var index=(windows.indexOf(name)); 
    return (index>-1) ? windows[index+1] : 'undefined'; 
} 

//modified openWin function 
function openWin(url, name) { 
    var params='width=200,height=100'; 
    window.open(url, name, params); 
    //test, ouput current url and the windows array 
    console.log(hrefByName(name)); 
    console.log(windows); 
} 

測試標記:

<input type="button" value="google" onclick="openWin('http://google.com', 'google')" /> 
<input type="button" value="bing" onclick="openWin('http://bing.com', 'bing')" /> 
<input type="button" value="stackoverflow" onclick="openWin('http://stackoverflow.com', 'stackoverflow')" /> 

當然,我想你有一個動態生成的URL的一個設置 - 只是建立隨機的名字或傳遞一個唯一的編號爲名稱。

+0

我很欣賞你的努力。但我正在尋找一種方法來獲取窗口的URL。假設在你發佈的例子中,我點擊'google'按鈕。谷歌窗口打開。現在我在谷歌搜索一些東西,那個窗口的URL會改變。現在我該如何獲取該URL? –

+0

@Annain Nair,由於瀏覽器的安全性,你不能這樣做。只有當它們與「父」窗口共享相同的起源時,才能從您打開的子窗口中獲取href。你想要的實際上是一種可以窺探每個瀏覽器窗口或標籤的跟蹤器。我可以通過本地安裝的桌面應用程序來了解如何實現這一目標,這是唯一的方法,它可以使所有瀏覽器進程都可用,並獲得其URL/hrefs。 – davidkonrad