0

ここに私の問題を示す短いテストがあります。iframe をロードするページがあります。

<html>
    <head>
        <title></title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
    </head>
    <body>
        <iframe id="iframe" src="box.html" style="width: 100px; height: 100px"></iframe>
        <script>
            $('#iframe').bind('load', function () {
                var div = $(this).contents().find('div');
                alert(div.height());
                alert(div.innerHeight());
                alert(div.outerHeight());
                alert(div.outerHeight(true));
            });
        </script>
    </body>
</html>

iframe (box.html) には、スタイル設定された div が 1 つ含まれています。

<html>
    <head>
        <title></title>
        <style>
            div {
                height: 50px;
                width: 50px;
                margin: 5px;
                padding: 5px;
                border: 2px solid #00f;
                background-color: #f00;
            }
        </style>
    </head>
    <body>
        <div></div>
    </body>
</html>

4 つのアラートは、それぞれ 50、60、64、および 74 を返す必要があります。これは、Safari と Chrome で期待どおりに機能します。FF 3.5.1 では、それらはすべて 64 を返します。これは誤りです。

FF/jQueryに正しい値を返すように強制する方法を知っている人はいますか?

4

1 に答える 1

0

代わりにこれを試してください:

var div = $(this).contents().find("html");
于 2012-02-27T17:02:25.680 に答える