javascript - 尽管 iframe 位于同一域,但出现跨源安全错误

标签 javascript html iframe same-origin-policy

当我单击按钮时,控制台中出现安全错误:

<iframe src="http://www.example.com/" id="iframe"></iframe>
<input type="button" value="Color it!" id="button">
<script>
    var iframe = document.getElementById('iframe'),
        button = document.getElementById('button');
    button.onclick = function () {
        iframe.src = 'linked-frame.html';
        iframe.contentDocument.body.style.background = 'red';
    };
</script>

DEMO

当我更改函数中的 iframe 源时,它不应该抛出此类错误。

最佳答案

您的问题是,您需要等到 iframe 在更改 src 后加载,然后才能触发函数。

尝试

var iframe = document.getElementById('iframe'),
button = document.getElementById('button');
button.onclick = function () {
  iframe.src = 'linked-frame.html';

  iframe.onload = function() {
    iframe.contentDocument.body.style.background = 'red';
  };

};

示例在这里 http://jsfiddle.net/vrTP9/1/

关于javascript - 尽管 iframe 位于同一域,但出现跨源安全错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23951945/

相关文章:

javascript - 选择按钮 ng 模型值在 ng 内未定义 if

javascript - 如何根据容器大小设置字体大小?

javascript - Array.pop - 最后两个元素 - JavaScript

使用 FFMPEG 的 PHP HTML5 兼容 MP4 视频

javascript - 如何查找数组中不匹配的数字?

jquery - 仅在鼠标悬停时显示图标

javascript - IFrame 按钮点击事件

javascript - 使用 javascript 删除 iframe

javascript - 使用 Prototype $ 方法访问 IFrame 的元素的方式是什么

javascript - 为什么数组的索引在下面的代码中是一个字符串?