0

我有一个 iFrame,我像这样通过 jQuery 动态设置 HTML。

$("#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

html 方法根据作为参数传入的 HTML 设置内容。如果你想让它触发load()事件,你应该使用load 方法。此外,如果您不想依赖事件,可以使用回调函数load()

于 2013-02-09T22:40:27.940 回答
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 回答