作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个带有 iframe 的页面。 iframe 内容有时会执行导致它们增长的动态 JS 操作。当 thta 发生时,我必须调整 iframe 的大小以确保它足够长,我在 iframe 中这样做:
// I saved you the boredom of all the try{}s and != nulls, this is just the meat.
document.parentWindow.parent.reSize();
还有这个,在父 html 中:
function reSize()
{
try
{
var oBody = ifrm.document.body;
var oFrame = document.all('ifrm');
oFrame.style.height = oBody.scrollHeight + (oBody.offsetHeight - oBody.clientHeight) + 100;
}
//An error is raised if the IFrame domain != its container's domain
catch(e) { }
}
但是,在可能发生调整大小的每个地方,到处都是对此的调用。有什么地方可以把它放在“自动”的地方吗?我可以触发某些事件或其他什么?
相关链接:
最佳答案
将此代码放在父窗口的结束主体标记的正上方。将您的 iframe 大小调整代码放在注释的位置。
旧代码:
<script>
var intWinHeight = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight);
var resizeIframe = function() {
var newWinHeight = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight);
if(newWinHeight != intWinHeight) {
intWinHeight = newWinHeight;
// execute your Iframe resizing code here
}
}
setInterval(resizeIframe, 100);
</script>
新代码:
<script type="text/javascript">
var iFrameId = document.getElementById('myIframe');
var intWinHeight = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight);
var intIframHeight = (typeof iFrameId.contentWindow.window.innerHeight != 'undefined' ? iFrameId.contentWindow.window.innerHeight : iFrameId.contentWindow.document.body.offsetHeight);
function exeResizeIframe() {
var newWinHeight = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight);
var newIframHeight = (typeof iFrameId.contentWindow.window.innerHeight != 'undefined' ? iFrameId.contentWindow.window.innerHeight : iFrameId.contentWindow.document.body.offsetHeight);
if((newWinHeight != intWinHeight) || intIframHeight != newIframHeight) {
intWinHeight = newWinHeight;
intIframHeight = newIframHeight;
// execute your Iframe resizing code here
}
}
setInterval("exeResizeIframe()", 100);
</script>
请注意,更改 iframe ID由于 IE < 9 中的安全限制,只有本地路径可以在 ifram src 中工作
关于javascript - 如何在 HTML 页面变长时触发事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421742/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!