如果能夠在製表符中導航是一項要求,我認爲您必須使用JavaScript打開窗口系統的想法。由於在Firefox,Safari和大多數瀏覽器中,當您導航到不同的窗口時,opener屬性肯定會丟失。一個新選項卡擾亂整潔的沙盒。
由於不是必需的,按你的意見,我想你可以使用的3種方法之一:
- 親子窗口communication--我會佔用 未來;
- XMLHTTP請求(又名。 AJAX);或
- 的iFrame(舊的方式 到遠程服務器:)
我會好好家長親子溝通角,在這裏,因爲你似乎是最舒服用它。
- 「兒童」窗口中的導航之間很容易。
- 頁面上的任何鏈接都加載到子中並共享相同的「開啓者」。
- 父母可以重新加載不同的頁面,並共享相同的開啓者。
- 將有一個父監聽器功能在孩子;
- 孩子將有一個單獨的f 聯合聲明父母。
- 父母將有一個或多個子聽衆,具體取決於通用性或特定需求。
我已經更新(不完全)我幾年前寫了一篇文章,讓你玩的窗戶和實際做最小的表單提交。通信警報相當詳細;但是你會毫不懷疑誰在向誰傳達什麼。第一個孩子煩惱地打開onload。但是頁面上有一個鏈接可將該子項更改爲服務器生成的表單。
JavaScript: Beyond Parent Child Windows
實施例的代碼片斷:
甲鏈接:
<a href="page1.html" id="newwinlink">open a window from link</a>
鏈接監聽:
事件監聽器和目標屬性被設置在文件的頭部,在JavaScript執行的onload:
var mywin; //global variable for best results
//XDOM - normalizes browser differences:
var openingLink = XDOM.getElementById('newwinlink');
openingLink.target = "newWin"; //important!
XDOM.addListener(openingLink, 'click', function(e){mywin=window.open('','newWin','width=400,height=400,resizable,scrollbars');if (!mywin.opener){mywin.opener = self;}return true}, false);
子文檔 - 家長監聽:
function parentListener(pmsg)
{
alert("I'm the child, and I just received the following message from my parent:\n\n" + pmsg);
}
子文檔 - 與父母交談:
function talktoParent()
{
if (self.opener!=null) {
opener.childListener("Hi from child window!");
} else {
alert("no opener... sorry, can't talk now");
}
}
父文檔 - 兒童監聽:
function childListener(cmsg)
{
alert("I'm the parent. Just received the following message from my child:\n\n" + cmsg);
//send back a message to the child, mywin...
mywin.parentListener("Hi, back, from parent window!");
}
這些都是簡單的。但是您可以在上面提供的鏈接中看到開啓者的連續性,導航以及服務器端回傳和Parent之間的通信。
再一個缺點是,在另一個選項卡中打開這些選項將會失去與父項的連接。在我發給你的網頁上試試。我相信孩子會提醒你,它已經與其「開瓶器」斷開。
隨意提問,jb。
我在考慮我的迴應。但首先我想評論一下你想讓用戶能夠在標籤頁中打開這些頁面(第一頁和第二頁等)。請注意,當頁面在選項卡中打開時,大多數瀏覽器都會切斷「開啓者」的鏈接。其次是你的「查詢和查詢結果」全部是從「你的」模塊完成的,而不是「主」模塊?第三,所有頁面都在同一個域上嗎?如果你可以澄清,(最好有一個簡單的示例結構),這將是有益的。謝謝。 – 2009-05-22 13:36:01