2011-03-28 50 views
3

我正在處理一個涉及在iframe中託管網頁的項目,而託管父級iframe位於本地磁盤上的HTML文件中,請在c:\上說;而內部託管的iframe位於某個服務器上。這兩個網頁需要彼此進行postmessage。關於javascript postmessage本地磁盤上的父級HTML iframe

因爲它知道內部iframe的域,因此父級iframe(在本地磁盤上)向內部幀發送消息沒有問題;

但是,當內部iframe需要將消息發送回父iframe時,它需要提供位於本地磁盤上的父iframe的域。

我試圖在內部HTML下面以PostMessage的其父的IFrame,這是對本地磁盤:

*var messageToSend = { 
         jsonrpc: "2.0", 
         result: [result] 
        }; 
window.parent.postMessage(JSON.stringify(messageToSend), "file://");* 

// window.parent IFrame,這是一個HTML文件,該文件是本地磁盤

但是當我嘗試使用「file:」作爲postmessage中的域回到父級iframe時,我得到一個「無效參數」錯誤。

有人可以幫忙嗎? 「本地磁盤html」的域名應該是什麼?任何提示將不勝感激。

乾杯

+0

因爲這不是一個詞。如果你想要認真對待,要認真對待。 – 2011-03-28 23:56:04

+0

有一些代碼可能會有所幫助... – DashK 2011-03-29 00:42:03

回答

5

我不知道如何指定「文件」,我猜也沒有辦法,因爲它沒有太大的意義。源的目的是爲了防止其他人(可能是惡意的)看到你的消息,但是如果源只是硬盤上的任何文件,任何人都可以通過創建一個帶有框架的html文件並從你的網頁加載你的網頁來看到它你的服務器。因此,指定「文件」(即使有一種方法)並不比指定「*」更安全,所以只需使用「*」並將自己省去頭痛。

+0

「...將消息發佈到文件中的頁面:URL當前要求targetOrigin參數爲」*「file://不能用作安全限制;此限制可能會在將來進行修改。「 [見MDN](https://developer.mozilla.org/en-US/docs/DOM/window.postMessage) – christophersw 2012-08-28 20:08:36