3

我正在开发一个小站点,该站点将本地 HTML 文件加载到iframe单击按钮中。应根据本地 HTML 文件内容的大小调整 iframe 的大小。以下几乎可以工作 - 但是,我需要单击“填充”按钮两次才能调整 iframe (Firefox) 的大小。

我很确定这与事件的处理方式有关,但我已经尝试过,但e.preventDefault()没有return false任何运气。有任何想法吗?

<!DOCTYPE html>
<html lang="en-us">
<head>
    <title>Load</title>
    <meta charset="utf-8" />
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script>
        $(function() {
            $("#run").click(function(e) {
                e.preventDefault();
                var framex = document.getElementById('iframe');
                framex.setAttribute("src", "local.html");
                framex.style.height = (framex.contentWindow.document.body.scrollHeight + 50) + "px";
                return false;
            });
        });
    </script>
</head>
<body>
    <input id="run" type="button" value="Load">
    <div id="div" style="width: 100%; height: 600px; overflow: auto;">
        <iframe id="iframe" width="100%" frameBorder="0">

        </iframe>
    </div>
</body>
</html>
4

1 回答 1

3

第一次分配framex.style.height时,页面还没有加载,所以文档没有大小(或者甚至不存在,这会导致错误)。

您必须等到页面加载完毕:

framex.onload = function() {
    this.style.height = (this.contentWindow.document.body.scrollHeight + 50) + "px";
};
于 2013-07-05T21:23:27.457 回答