首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用父类中的javascript编辑iframe的DOM

使用父类中的javascript编辑iframe的DOM
EN

Stack Overflow用户
提问于 2015-04-13 15:18:09
回答 1查看 166关注 0票数 1

所以我在A.html上有一个非常简单的网站

代码语言:javascript
运行
复制
<body>
    <p class="text">Some text</p>
</body>

和另一个在B.html的iframe中显示A的站点

代码语言:javascript
运行
复制
<body>
    <iframe id="frame" src="B.html" onload="onLoadHandler();"></iframe>
</body>

如果我打开文件B在我的谷歌铬浏览器,一切都显示为预期。但是,如果我在B.html中执行以下一行javascript代码(尝试将iframe中的p元素的颜色更改为粉红色)

代码语言:javascript
运行
复制
function onLoadHandler()
{
    var frameElement = document.getElementById('frame');
    var frameDocument = frameElement.contentWindow ? frameElement.contentWindow : frameElement.contentDocument.defaultView;

    var x = frameDocument.getElementsByClassName("text");
    x[0].style.backgroundColor = "pink";
}

我在第二行得到以下错误:

Uncaught :阻止原名为"null“的帧访问原名为"null”的帧。协议、域和端口必须匹配。

这只是一个虚拟的测试,真正的场景是我们有网站www.company.com,在一个iframe运行www.verysecurebank.com,我们想编辑一些按钮的样式,在里面的iframe。所以是的域名永远都比不上。

不过,我想知道为什么浏览器会认为这是跨站点脚本,但是如果您使用开发人员工具( developer tools,f12),您可以在浏览器本身没有问题的情况下操作iframe的任何部分?我们可以使用开发工具成功地打开iframe蓝色中的所有按钮,但是在包含iframe的父html中不能使用javascript实现它。

EN

回答 1

Stack Overflow用户

发布于 2015-04-13 15:34:40

判断是否存在跨域的三条规则:

  1. 不同的协议;
  2. 不同的港口;
  3. 不同的域名。

前端开发人员无法解决第一个和第二个问题。作为最后一个,如果两个域具有相同的主域名,则可以通过将document.domain设置为相同的主域名来解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29608990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档