2011-04-13 22 views
1

我建立了各種網站一個書籤,其功能基本上是這樣的:來自其他域的iFrame如何擺脫自身?

  1. 用戶導航到FOO.COM(外部網站不在我的控制)
  2. 用戶點擊瀏覽器了一個書籤,抓住一些的iframe
  3. 用戶內側bar.com從foo.com並顯示形式有關的信息提交內部bar.com其內部foo.com形式
  4. iframe的自敗

問題是讓iFrame自行刪除。由於我無法訪問另一個域中的父域內的函數,因此我無法創建自定義函數parent.removeIFrame(),甚至無法創建window.top.location.reload()。我嘗試了很多技術,但由於跨域腳本的原因,所有這些技術都失敗了。

我解決它的方法是將top.location.href改爲我在bar.com/back.html上構建的自定義頁面,其中所做的僅僅是發送一個「history.back()」在原始頁面上反彈用戶的命令。儘管有創意,但我認爲這不是很優雅的解決方案。有沒有更好的辦法?

回答

0

當你注入JS代碼來在網站的頁面上創建表單時,你可以讓它輪詢(在新創建的iframe之外的js)你的服務器知道何時刪除iframe 。你可以使用各種方法來做到這一點,包括jsonp,長輪詢,發佈消息,片段標識符等。你不需要爲此加載一個大型庫 - 對bookmarklet來說越小越好。