2011-07-11 52 views
1

我生成I幀動態地對很多不同的隨機網站,我傾向於在我的JavaScript控制檯收到此錯誤(不一定與此網址):麻煩藉助iframe

Unsafe JavaScript attempt to access frame with URL http://localhost:3000/results/ from frame with URL http://www.apple.com/iphone/. Domains, protocols and ports must match. 

爲什麼我收到這個錯誤?有沒有辦法擺脫它?

所以只有兩次我在JavaScript中的I幀交互的是,當我在iframe動態加載:

$("#results_div").html('<iframe src='+url+' frameborder="0" class="iframe"><p>Browser does not support iframes.</p></iframe>'); 

,當我拉src屬性的iframe:

var previewed = $("iframe").attr("src"); 

哪一個是導致錯誤?

+0

這是一個安全問題;你能詳細說明一下你的iframe代碼中的Javascript/script-tags嗎? – ghayes

回答

4

腳本在你的iframe試圖訪問父的腳本/ DOM和他們在不同的領域。跨域腳本通常會生成該錯誤。

就你而言,apple.comlocalhost是不同的域,並且這些iframe試圖訪問其父窗口的腳本或dom元素。

夫婦的方式來解決這個問題:

+0

謝謝。我更新了我的問題細節。哪個代碼負責這個錯誤?哪一種解決方案最容易實施? –

+0

從錯誤消息看來,iframe內部似乎正試圖訪問您的代碼。大多數主要網站不允許iframing,所以他們確實檢查他們是否被iframed(內容複製是一個原因)。我懷疑檢查是拋出這個錯誤。無論如何,你的代碼似乎並沒有做任何事情。 – Mrchief

+0

是的,這正是發生了什麼事情。我無法確定兩者屬於同一個域,因爲我正在爲不同的域生成iframe,對吧? –

0

這是由於這樣的事實,你的腳本試圖存取權限的另一個域的一些代碼。通過閱讀相同來源策略可以理解此行爲。 http://en.wikipedia.org/wiki/Same_origin_policy

有變通方法,並通過它可以解決此問題的一些實施。

它們中的一些使用代理方法,片段標識符的方法。

在HTML5中,我們可以使用postmessages得到這個解決。

但是你必須弄清楚什麼可能適合你。

0

你不能用JavaScript或除了與裝載域到IFRAME iFrame的不同結構域相互作用。