2015-06-24 85 views
0

我在外部域上有多個iFrame(相同域)。如果我做了window.top.frames [「name-here」]。postMessage()並且框架存在,那麼顯然postMessage正確執行。在外部域上交叉iFrame postMessage

但是,在這種情況下,iFrames是基於模塊的,因此它們都不需要存在。因此,如果我初始化「window.top.frames [」name-here「]。postMessage(」HI「,」*「)」,並且該框架不存在,則會產生一個阻止了一個源於「xyz 「從訪問跨源幀。我認爲這不是什麼大問題,因爲它不會拋出頁面錯誤。

我試過用postMessage循環瀏覽window.top.frames,但那也會引發CORS錯誤。

回答

0

該錯誤可能與postMessage不同,但可以通過訪問框架本身。致電window.top.frames["name-here"]很可能會給你同樣的信息。正如你所說,我不認爲這個錯誤是一個大問題,但如果你想擺脫它,你可以得到frames長度並相應地發送你的消息。像這樣:

var existing_frames = window.top.frames.length; 
+0

正確,問題不在postMessage中。這是一個CORS例外。幀長度並不差,但我們無法根據幀長度準確測量,因爲根據社交插件/小部件等不同可能會有所不同。 –

+0

好的,那麼我想這是一個嘗試和捕捉的情況。 –