2012-04-13 78 views
0

我有兩個HTML頁面兩個HTML頁面之間的消息:source.html和dest.html傳遞使用JavaScript

  • 在source.html,我創建了一些按鈕(啓動,停止,暫停......)
  • 在dest.html中,我創建了一個簡單的時鐘。

每當我點擊其中一個按鈕時,源將向dest發送消息。經過處理後,結果(基於哪個按鈕被按下)將被髮送回源。 我試過iframe,但它不適合我。有沒有建議不使用客戶端 - 服務器模型?

回答

0

有兩種發送消息的方式。

  1. 在源創建它提交到dest.html形式,確保該方法是「GET」

  2. 上設置的消息值按鈕的點擊提交表格

    //類似於 document.getElementById('message')。value ='HELLO'; document.getElementById('form')。submit();

2a。你不需要讓表單,你可以用在source.html按鈕硬編碼的URL重定向點擊喜歡

window.location = 'dest.html?message=somemessage'; 
  1. 在提交dest.html文件將打開,在URL中提供的信息

    var url = window.location +「」;

    //如果有多個參數,你將不得不循環,並將它們存儲在數組單可以使用

    變種消息= url.substr((url.indexOf(「=」)+ 1)) ; alert(message);

第2種方法 沒試過,將它們存儲在cookie時按鈕點擊source.html獲取和閱讀dest.html餅乾

+0

不知道爲什麼我不被允許縮進這個。 – Zaje 2012-04-13 11:04:07

+0

第一種方法 - 它將是一個單向過程。這兩個頁面將在一個窗口(標籤)中依次打開。 source.html加載dest.html,dest.html加載source.html。不是兩次! 或者它將是同一個模型開啓者孩子,但它不是使用形式的必要條件。 – 2012-04-13 11:14:43

+0

好的,它的工作,但我可以創建2頁作爲「客戶模型模擬」?我的意思是,這兩個頁面在同一時間存在,每當source.html發送一條消息到dest.html時,它會迴應source.html? – nxhoaf 2012-04-13 11:22:46

0

沒有辦法這樣做,如果窗戶是獨立的(沒有請求服務器)。如果兩個窗口都沒有任何類型的框架。由於安全原因。

但是如果你從source.html創建dest.html窗口,您可以使用創建的窗口的變量(window.open)進行管理和開瓶器對象來管理source.html窗口。

+0

所以你的意思,我必須dest.html融入source.html,然後使用窗口對象來操作dest.html步驟? – nxhoaf 2012-04-13 10:55:41

+0

通常不需要做任何操作btw獨立窗口。所以他們使用或框架,或創建子窗口。所有這些方法都爲您提供本地方法。 但是,如果你需要操作btw標籤,你真的可以嘗試使用cookie的方法。它必須在一個共同的領域內工作。 – 2012-04-13 11:09:30

0

其實,你可以。 嘗試使用window.postMessage()方法。 另外,如果你想發回一些消息,你將需要創建一個事件監聽器。

請按照this referrence