2011-12-23 46 views
3

我有一個網頁,裏面有一些javascript,它將作爲iframe嵌入到不同的網站。我需要根據所運行的網站來調整我的頁面的行爲。爲此,我想讀我的網頁top.location.href,但引發的錯誤:獲取來自不同網域的frame/iframe的頂部窗口網址

Unsafe JavaScript attempt to access frame with URL http://website.url from frame with URL http://mypage.url . Domains, protocols and ports must match.

有一些方法去解決此問題?

+0

不,那是不可能的任意網站。 – 2011-12-23 17:34:33

+0

我已經提供了一個答案,下面和重複的問題http://stackoverflow.com/questions/4903351/getting-url-of-the-top-frame/19438476#19438476 – mcanfield 2013-10-17 22:34:51

回答

1

這是因爲您陳述了相同的原產地政策,並且出於安全原因而採取了相應的措施。在不改變用戶瀏覽器的情況下,沒有辦法繞過它。

+0

我希望有一些其他的方式來獲取那條信息。但我不明白爲什麼現代瀏覽器如此嚴格,並認爲有害的框架來閱讀其頂部網址。 – etuardu 2011-12-23 17:46:34

10

在最常見的情況下,您確實可以檢索iframe的父網址。如果iframe是隻有一個級別深度此方法將工作:

var parentURL = document.referrer

https://developer.mozilla.org/en-US/docs/Web/API/document.referrer

我創建的iframe小部件時使用此方法。只要記住,如果你想要頂級窗口的位置,但它不是你的iframe的父窗口......你將無法得到它。此外,如果您的小部件在iframe中導航,那麼引用者將會更改。

另一個優秀的寫了由Nicholas Zakas可以在他的博客在這裏找到: http://www.nczonline.net/blog/2013/04/16/getting-the-url-of-an-iframes-parent/

+0

爲什麼選擇投票?這有效,並可能有助於其他人知道。 – mcanfield 2014-03-02 13:36:01

+0

編輯:我沒有downvote,但也許有人這樣做,因爲它不會給你最好的位置。但很好的信息謝謝。 – 2014-03-23 00:07:54