是否可以使用页面上但在此框架之外的脚本来读取/编辑iframe内容(不仅仅是像src这样的属性)?我知道如果source来自其他网站是不可能的,因为它会是一个很大的漏洞,但我只是问它是否适用于同一来源的其他内容.
是的,如果 iframe 和父页面的位置位于同一主机(同源策略),则可以执行此操作。
为确保浏览器允许您执行此操作,您可以使用
document.domain = "example.com"
Run Code Online (Sandbox Code Playgroud)
在父页面和 iframe 中。(注意 subdomain.example.com 和 example.com 是不同的)
用于执行此操作的 Dom 方法(iframe 的父页面):
document.getElementById("myiframe").contentWindow.document.getElementById("divinframe").innerHTML = "I'm on the inside.";
Run Code Online (Sandbox Code Playgroud)
document.getElementById("myiframe").contentWindow.someFunctionInsideIframe();
contentWindow 是答案,适用于大多数(如果不是全部)现代浏览器,当然是 chrome、ie7+ 等。
走另一条路(iframe 到父页面):
top.document.getElementById("DivInTopParent")
Run Code Online (Sandbox Code Playgroud)
要添加已经说过的与从同一域加载的iframe进行交互的内容:
只要尝试进行交互的页面和您加载的页面具有相同的document.domain,浏览器就允许您与iframe(或框架)进行交互.
您可以将document.domain设置为从中加载的主机的后缀.例如,如果你有一个从blog.fred.com加载的页面,并且它想要与一些名为jsonservice.fred.com的服务进行交互,那么这两个页面都必须要做
document.domain = 'fred.com';
Run Code Online (Sandbox Code Playgroud)
之前javascript中的一个将能够与另一个进行交互.
浏览器非常聪明,不允许您将document.domain设置为'.com',以防您想知道......
| 归档时间: |
|
| 查看次数: |
9823 次 |
| 最近记录: |