是否可以使用頁面中但在此框架之外的腳本來讀取/編輯iframe內容(不僅是src等屬性)?我知道如果源自其他網站是不可能的,因爲這將是一個很大的漏洞,但我只問它是否適用於來自同一來源的其他內容。使用Javascript和相同來源的內聯框架
回答
如果iframe的內容是從同一個域,你可以通過使用frames.myiframe.getElement...
瀏覽器只限制用戶訪問內容的iframe /父內容是不是來自同一個域名訪問它。對於來自同一個域名的請求,您可以通過window.parent
或myiframe.document.getElementById
或myiframe.document.getElementById
訪問內容。如果iframe和父頁面的位置屬於同一主機(相同的源策略),則可以執行此操作。
爲了確保瀏覽器可以讓你做到這一點,你可以在父頁面上,並在iframe使用
document.domain = "example.com"
。 (請注意,subdomain.example.com和example.com是不同的)
大教堂方法這樣做(父頁面的iframe):
document.getElementById("myiframe").contentWindow.document.getElementById("divinframe").innerHTML = "I'm on the inside.";
document.getElementById("myiframe").contentWindow.someFunctionInsideIframe();
contentWindow是答案,在大多數情況下,如果不是所有的現代瀏覽器,肯定是鉻,即7 +等
要走另一條路(iframe到父頁):
top.document.getElementById("DivInTopParent")
要添加到什麼已經說,大約有來自同一個域加載iFrame的互動:只要
瀏覽器將讓你與I幀(或幀)互動,正試圖在頁面做交互和你已經加載的頁面有相同的document.domain。
您可以將document.domain設置爲您從中加載的主機的後綴。例如如果你有一個從blog.fred.com加載一個頁面,它希望與一些服務,稱爲jsonservice.fred.com互動,兩個頁面將不得不做
document.domain = 'fred.com';
的JavaScript之前,將能夠與互動另一個。
瀏覽器是足夠聰明,不要讓您設置document.domain的以「.com」之間,如果你想知道...
這不正是一個客戶端/ JavaScript的解決方案,但它幫助我解決了這個問題。
您需要刪除X-Frame-Options
頭,如果存在的話,而是發送下列之一的iframe頁面:
Content-Security-Policy: frame-ancestors 'self' example.com *.example.com
和另外一個針對IE:
X-Content-Security-Policy: frame-ancestors 'self' example.com *.example.com
- 1. 使用Javascript和跨域內聯框架
- 2. 內聯框架上的交叉來源
- 3. 保持相同的外觀,而不使用內聯框架
- 4. 使用JavaScript跟蹤點擊不同的內聯框架
- 5. 用javascript攔截框架和內聯框架
- 6. 使用內聯框架的ASP.net
- 7. 相同來源政策 - JavaScript調用PHP
- 8. HTML框架來源
- 9. 在android中使用相同的框架
- 10. 使用相同的實體框架
- 11. 使用框架隱藏JavaScript源代碼
- 12. 替代框架和HTML中的內聯框架
- 13. Extjs歷史類和內聯框架
- 14. Node.js和Sproutcore上的相同框架/庫
- 15. 相同的來源策略和DOM
- 16. 如何取回按鈕以使用錨點(#)和內聯框架
- 17. 樣式化內聯框架
- 18. 替代HTML內聯框架
- 19. Piwik和Sugar CRM使用相同的框架嗎?
- 20. 相同的MySql數據庫使用PHP和Python框架
- 21. 使用數據源和實體框架
- 22. 相同版本的框架
- 23. 框架和內嵌框架有獨立的JavaScript上下文嗎?
- 24. 內聯和非內聯JavaScript之間的不同行爲
- 25. 動態生成內聯框架導致以前生成的內聯框架不經常刷新 - 使用innerHTML時
- 26. 同步框架資源
- 27. jQuery .ajax和相同來源策略
- 28. IP地址和相同來源策略
- 29. 相同來源政策和.ajax跨域
- 30. 在不同的Tkinter框架中使用相同的按鈕
我覺得這個環節說這一切[腳本Iframes - 教程和示例](http://www.dyn-web.com/tutorials/iframes/) – mplungjan 2010-04-22 17:42:06