iframe属性onload被多次调用

时间:2014-08-28 09:27:46

标签: javascript html iframe

我有一个iframe需要在每次加载时重新调整它的高度,我尝试了很多例子但是所有这些都在IE和Chrome上工作正常而不是FireFox,直到我尝试了这个并且它有效关于一切

function autoResize() {
            var subscriptionFrame = jQuery("#frame_name_here");
            var innerDoc = (subscriptionFrame.get(0).contentDocument) ? subscriptionFrame
                    .get(0).contentDocument
                    : subscriptionFrame.get(0).contentWindow.document;
            if (innerDoc.body.scrollHeight == 0)
                innerDoc.location.reload(true);
            subscriptionFrame.height(innerDoc.body.scrollHeight + 10);
        }

<iframe src="uploadFile.xhtml" class="upload-iframe"
            id="frame_name_here" onload="autoResize();"></iframe>

但是有一个问题,这个脚本多次调用onload(递归),任何想法为什么?

1 个答案:

答案 0 :(得分:0)

我找到了一个答案,iframe部分显示为none,这并不意味着它不在Dom树中,这就是递归部分发生的原因,因为iframe在这种情况下没有得到任何显示iframe之前的高度,并通过resize函数读取高度的内容。为了解决这个问题而不是display:none,我使得iframe部分没有在dom树中呈现,直到某个动作,所以此操作的resize方法只会读取一次内容。