javascript - 仅在 Chrome 中调整 Iframe 大小问题

标签 javascript html css google-chrome javascript-framework

好的,就到这里。 Stack Overflow 处女地在这里,但希望你们能够帮助我。

我一直在根据 iframe 的内容调整其高度。随着用户逐步完成一系列表单,内容会有所不同,这意味着每次提交都会生成一个新表单,其中有 3 个表单。

下面的代码在 iframe 加载时被调用,

function checkHeight() {
    var frame=document.getElementById('frame');
    var doc=frame.contentWindow.document;
    var data=doc.getElementById('data');
    alert(data);
    var data_height=data.offsetHeight;
    if(data_height) {
        frame.style.height=data_height + 'px';
        alert('height has been set');
    }
}

这在 Mac 和 PC 版本的 Mozilla、IE 和 Safari 上运行良好,但我在使用 chrome 时遇到了一个大问题。它没有返回框架内的文档。这是权限错误还是什么?!

我也尝试过 contentDocument 但无济于事。

所有文档都位于我的服务器上,并且都在同一个文件夹中。

提前致谢。

最佳答案

编辑:

我重新阅读了您的问题 - 由于它们位于同一安全沙箱中(即在同一域中),因此仅计算 iframe 文档内的高度并调用父级调整大小函数会更简单吗?

原文:

由于当 iframe 从不同的域嵌入时会发生类似的情况(无法访问 iframe..document),我推测这种方法会起作用:

  1. 首先:计算文档本身(即 iframe 内)的文档高度。
  2. 使用旧版浏览器的 window.postMessage/hash 轮询将值传递给父级。有a neat library它会为您照顾兼容性。
  3. 接收父级中的值并相应地调整 iframe 的大小。

同样,这可能有点过头了,但考虑到该解决方案已经过测试,可以在不同的安全沙箱之间完全按照您的要求进行操作,如果 iframe 更简单的场景也应该是这种情况位于同一域中。

话虽这么说,如果它们位于同一域(而不是小部件/不可混搭的第三方内容),那么真的需要 iframe 吗?听起来这只是设置 jQuery 来发出 ajax 请求并用新数据填充容器的问题。

关于javascript - 仅在 Chrome 中调整 Iframe 大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9464374/

相关文章:

javascript - 从 deferred.then() 返回数据时保留参数

java - 使用 jquery 从表单中检索数据

javascript - Chrome 中的 HTML5 视频,安全错误 : DOM Exception 18

javascript - 如何打印span标签中变量的值?

jquery - 在 IE8(jQuery 广场)中的淡出/淡入效果期间不需要的透明背景

css - jQuery Mobile 不在动态复选框上应用样式并且无法单击

html - float 元素留下空隙(由于高度不同)

javascript - react Hook : Handling Objects as dependency in useEffects

javascript - 控制台.log();那个放在 <p> 里?

Python Django 多行形式