0

私はjQueryを介して動的にHTMLを設定しているiFrameを持っています。

$("#iframe").contents().find('body').html("This is a large HTML string");

これはうまくいきます。しかし、私の高さはiFrameの高さを調整するために機能しません。後ではなくDOMの変更前に高さを取得していると思います。新しい HTML で新しい高さを取得するにはどうすればよいですか? .load イベントが発生しているとは思いません。これが私がこれまでに持っているものです:

$("#iframe").load(function () {
   //alerting this new height returns nothing
   $("#iframe").contents().find('body').height();
});

何か案は?

4

3 に答える 3

1

メソッドチェーンを使用する

$("#iframe").contents().find('body').html("This is a large HTML string").height()
于 2013-02-09T22:35:55.050 に答える
0

すでに jQuery を使用しているため、iframe チェーンが完了した後に起動するコールバック関数を作成できます。ここから好きな場所に持っていくことができる単なるデモです。

var callbacks = $.Callbacks();
callbacks.add( createIframe );
callbacks.fire( getHeight() );

function createIframe() {
 $("#iframe").contents().find('body').html("This is a large HTML  string");
}

function getHeight() {       
   alert( $("#iframe").contents().find('body').height() );
}
于 2013-02-09T22:46:11.260 に答える
0

html メソッドは、引数として渡された HTML に基づいてコンテンツを設定します。load()イベントを発生させたい場合は、代わりにload メソッドを使用する必要があります。さらに、イベントに依存したくない場合は、コールバック関数を使用できます。load()

于 2013-02-09T22:40:27.940 に答える