2013-01-04 45 views
3

我有一個彈出窗口,並從那裏,我想重新加載父窗口,但特定的框架不是整個頁面。從彈出窗口重新加載特定框架

因此,用戶點擊一個框架內的按鈕,它會打開彈出窗口。現在從彈出窗口中,根據特定的事件,我想從父窗口重新加載一個框架。

這是可能在IE瀏覽器?

我有一個頁面index.php,其中有2個iframe。

從第二個iframe中打開一個新的彈出窗口。

當用戶點擊按鈕或關閉彈出窗口時,我想重新加載iframe#2(打開窗口的那個)。

我該怎麼做?

我曾嘗試:

opener.location.reload(); 
opener.top.document.getElementById('myIFrameId').location.reload() 
opener.myIFrameId.location.reload(); 

似乎沒有任何工作。

+0

「彈出窗口」作爲IE的新實例或在網頁上的一個模式? – Popnoodles

+0

通過JavaScript創建,window.open(...) – loyalflow

+0

您可以通過'opener'變量從彈出窗口到達父窗口。從那裏你可以用'getElementById'查找iframe,使用'getElementsByTagName'查找所有的iframe或者使用'window.frames'屬性。你在哪裏卡在這條路上? –

回答

0

我種在這裏重修此功能: http://jsfiddle.net/JBWTn/3/

單擊,在彈出按鈕將改變一幀在原始窗口邊框的外觀。這裏的關鍵是通過原有窗口的框架使用

window.opener.document.getElementById('[ID_OF_YOUR_FRAME]')

(非常類似於弗蘭克麪包車Puffelen建議)

要重新加載框架,而不是僅僅改變其風格導航,使用

window.opener.document.getElementById('[ID_OF_YOUR_FRAME]').location.reload()

...就像你在你的問題已經試過。

這個問題在phpMyAdmin(在那裏你可以從彈出的窗口中運行SQL查詢,並在主窗口中顯示的結果)讓我想起的功能,所以我有一個快速瀏覽一下;)

2

我找到了很棒jQuery插件適用於所有現代瀏覽器,,包括IE8

它可以讓你輕鬆調出輔助瀏覽器窗口與參數,然後你允許兩個,類似於如何postMessage API作品之間傳遞數據。

這些數據消息反過來可以將新內容或備用網頁加載到您的父頁面上的原始iframe2中,一旦您分析傳入的jQuery數據。

文章:jQuery plugin for communication between browser windows

在線演示:Parent Page

下載項目:windowmsg.zip

下載的文件將直接從您的桌面工作,不像jsFiddle因爲它不允許有。


然而,當你不需要輔助瀏覽器窗口,並使用浮動iframe的那個偉大工程的另一個解決方案是可以接受的,只要用一個燈箱克隆這IFRAME能,如Shadowbox-js

這種方法的好處是您可以完全控制iframe的關閉方式,而不像上面的輔助瀏覽器窗口,它有自己的瀏覽器關閉按鈕,可能無法觸發您想要的事件。

燈箱克隆關閉事件期間的回調可以照顧根據需要更改父頁面iframe 2中的內容。此外,您可以選擇將lightbox綁定在iframe 2(lightbox安裝在iframe頁面中),或者將其全屏(燈箱安裝在父頁面中)。

0

你試過:

opener.frames["myIFrameId"].location.reload(); 
0

,它會顯示錯誤「錯誤:權限被拒絕訪問屬性‘重裝’」

這可能是「同源策略」的問題。

或創建在IFRAME一個div包裝和重新生成的iframe再次

相關問題