我已经实现了上一篇文章Resizing an iframe based on content中描述的解决方案,它几乎工作得很好,但并不完全。
我遇到的问题是,有时它会正确计算高度,有时它会计算得太短并且内容会被截断。
我正在寻找一些可能导致这种情况的建议,因为其他人似乎都取得了成功。在我看来,如果高度计算不正确,那么计算可能是在所有数据从外部源加载到 iFrame 之前发生的。但这是一个猜测,我绝不是 JS 专家。
我可以做些什么来确保在外部页面完成加载后完成计算?
我已经实现了上一篇文章Resizing an iframe based on content中描述的解决方案,它几乎工作得很好,但并不完全。
我遇到的问题是,有时它会正确计算高度,有时它会计算得太短并且内容会被截断。
我正在寻找一些可能导致这种情况的建议,因为其他人似乎都取得了成功。在我看来,如果高度计算不正确,那么计算可能是在所有数据从外部源加载到 iFrame 之前发生的。但这是一个猜测,我绝不是 JS 专家。
我可以做些什么来确保在外部页面完成加载后完成计算?
要正确计算高度几乎是不可能的。我已经玩了很长时间了。我经历过的一件事是,如果您在 iframe 中有一个表单,并且表单中有一些错误处理事件。假设表格中有一个带有隐藏行等的表格。然后当出现错误时,表格随着行开始出现而变得“更高”,因此高度范围现在再次不同。每当在 iframe 内完成回发时,就无法控制高度。我已经尝试了所有发布的解决方案,但无法正确计算。我不得不估计“最高”高度并将其硬编码为那个高度。
我预计问题是您需要检测 iFrame 中的内容何时发生变化,然后再次调整 iFrame 的大小。在现代浏览器中,您可以使用 mutationObserver 来执行此操作,但它在 IE10 以下不起作用,因此您必须使用故障回复来解决此问题。
我编写了一个小型库来处理所有这些问题,并根据其内容保持 iFrame 的大小。在现代浏览器和 IE8 上工作。