2010-01-27 124 views

回答

4

這似乎是不言自明的,但如果你需要更多的解釋告訴我(或者如果它不工作,但它應該...)

var winObj = window.open(/* lot of params */); 

if(!winObj) 
{ 
    /* pop-up blocked! */ 
} 
else 
{ 
    winObj.onload = function(){ /* do stuff here */ }; 
} 
+0

即使受到同一起源策略的限制,您是否可以與窗口事件綁定? – 2010-01-27 09:20:50

+0

我打開的彈出式網址位於不同的域中,因此出現如下所示的錯誤: 錯誤:許可拒絕上設置屬性Window.onload。 – exsource 2010-01-27 10:11:14

9

window.open返回到該窗口的window參考目的。

如果打開的窗口指向與窗口打開程序相同域的URL,則它將具有對該對象的完全訪問權限,就像它自己的window對象一樣。

var w = window.open(url); 

// If the window opened successfully (e.g: not blocked) 
if (w) { 
    w.onload = function() { 
     // Do stuff 
    }; 
} 

此處適用相同的原產地政策。如果打開的窗口的URL位於不同的域上,那麼開啓者將無法訪問該窗口引用的成員。

+0

+1表示與我完全相同(但是,您沒有提及「if(w)」的含義):P – 2010-01-27 09:24:39

+0

但是OP沒有說他/她不能更改頁面嗎?這不會覆蓋頁面onload事件嗎? – toc777 2011-03-30 11:08:18

+0

我認爲OP意味着他們無法實際更改頁面上的代碼。這提供了一種動態附加偵聽器的方法。 – 2011-03-31 07:59:55

相關問題