[英]How do I communicate back and forth with a popped up window
在我的網頁中,我使用此功能顯示一個小的彈出窗口
function popup (url)
{
poppedUpWindow= window.open(url, "PopupWindow", "width=400,height=300");
poppedUpWindow.focus();
return false;
}
我需要在thoos 2窗口之間共享對象。 我嘗試做這樣的事情,但現在可以了
poppedUpWindow.document.documentElement.addEventListener("load", foo, false);
我也可能做這樣的事情
function popup (url)
{
poppedUpWindow= window.open(url, "PopupWindow", "width=400,height=300");
var tmp = poppedUpWindow.document;
tmp.write('<html><head><title>popup</title>');
....
tmp.close();
poppedUpWindow.focus();
return false;
}
但是這種方法將使解決問題變得更加困難。 那么如何將信息從父窗口傳輸到彈出窗口,反之亦然?
從postMessage的文檔中:
發送這樣的消息:
otherWindow.postMessage(message, targetOrigin);
通過執行以下JavaScript,otherWindow可以偵聽調度的消息:
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
if (event.origin !== "http://example.org:8080")
return;
// ...
}
請記住瀏覽器支持: http : //caniuse.com/#feat=x-doc-messaging
IE 8 +,Firefox 3 +,Chrome所有版本,Opera 9.5 +,Safari 4+
這是我為面臨相同問題的其他人解決此問題的方法。 我認為瀏覽器是chrome或firefox。 我沒有測試其他瀏覽器。 Chrome中的事件“加載”有時會在整個javascript文件加載之前觸發。
function popup (url)
{
poppedUpWindow= window.open(url, "PopupWindow", "width=400,height=300");
poppedUpWindow.focus();
if(is_chrome)
{
window.setTimeout("doSomething()",300); //this value could vary! 300ms seemed fine to me!
}
else
{
fenster.addEventListener('load', doSomething, true); // FireFox
}
return false;
}
function doSomething()
{
poppedUpWindow.postMessage("hi","*");
var a = poppedUpWindow.document.getElementById("b");
// do anything you want..
}
在其他html中應該有此方法
function receiveMessage(event)
{
if (event.origin !== stringUrlOfFirstWebPage)
{
return;
}
event.source.postMessage("hey!",event.origin);//talking back to the first web page
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.