2013-01-18 138 views
0

我有一個帶頁面的MVC網站(讓我們稱它爲x)和一個iframe(讓我們稱之爲x2)。當我與iframe(x2)進行交互時,如果最終出現在特定的url上(我們稱之爲y),我希望該url(y)不要在iframe(x2)中打開,而要在瀏覽器中打開作爲主頁面。我希望網址也可以更改爲y。我需要什麼JQuery魔術?從iframe加載頁面到主窗口

編輯

是我的錯,我沒有解釋自己不夠好。我不會使用我單擊的鏈接轉到該頁面,但外部網站會從iframe重定向到該頁面。

+0

您是否可以控制頁面Y? – Leeish

+0

我對y有控制 –

+0

那麼我會在下面使用我的編輯答案,因爲它本質上會做同樣的事情。看我的編輯。 – Leeish

回答

1

你可以考慮通過window.postmessage這樣做。我做了類似的事情。我的一個網頁有一個iframe。點擊某個鏈接而不是更改iframe,會更改父頁面。

http://davidwalsh.name/window-postmessage有關於如何使用它的好文章。基本上你會在第x頁設置一個監聽器。當您加載頁面y時,請讓頁面y向父窗口發送消息。 X會監聽該消息並採取相應措施。

編輯:添加一個監聽器來檢查iFrame的onLoad事件。每次查看iFrame的URL。如果該URL匹配頁面Y,則強制頁面X更改URL。

+0

它似乎這是一個HTML 5的東西 - 不是我們所有的客戶有最新的瀏覽器 –

+0

那麼你可能不幸運。你仍然可以使用post.message。作爲回退,設置一個監聽器來檢查URL。 http://stackoverflow.com/questions/938180/get-current-url-from-iframe一旦你看到頁面Y的URL,強制頁面更改。不理想,但回落。僅僅因爲你的用戶都沒有新的瀏覽器,(沒有人)並不意味着你不能使用新技術。新技術可以解決這樣的問題。只需提供一個合適的後備箱,並告訴在高速公路上駕駛Model-Ts的人獲得一輛新車。 – Leeish

+0

http://stackoverflow.com/questions/2429045/iframe-src-change-event-detection你可以閱讀如何監聽iFrame URL更改事件。 – Leeish

1

不需要jQuery的,只是把target<a>

<a href="@Url.Action("Action", "Controller", { property = 'foo' })" target="_parent">Link</a> 
+0

這不起作用。網址不在我們這邊。它是來自外部網站的重定向。 –

+0

在這種情況下,您所需的內容是不可能的,因爲由於同源策略/ XSS,您無法通過iframe與其他域的內容進行交互。 –

+0

你可以通過郵件發送。但仍然必須訪問iFrame中的頁面。我做它跨域。 – Leeish

1

我相信你可以通過在URL末尾加上一個hashtag加上一個循環來檢查它在目的地的景象。更改hashtag不會重新加載URL並允許目標框架讀取它。這是hacky,但它應該工作。