0

我正在使用 iCanHaz.js 来交换屏幕,但我需要一个函数来在新内容完全加载完成后触发。我以前可以通过使用 0 的 setTimeout 使调用异步来做到这一点,但是在有很多图像的页面上,这似乎还不够快。

function show_page(){
   document.getElementById('container').innerHTML = ich.artworks({
      variables : variables
   });
   window.setTimeout(function(){
       var midWidth = (document.body.offsetWidth/2) - window.innerWidth / 2;
      var midHeight = (document.body.offsetHeight/2) - window.innerHeight / 2;
      scrollTo( midWidth, midHeight);
   }, 0);
}

我怎样才能延迟这个功能,直到知道高度?即使我知道高度,我也无法滚动到页面当前高度以下的点,所以如果我不知道它们的高度,我必须等到图像加载完毕。

4

2 回答 2

0

您必须稍微修改基于模板的方法,但如果您使用创建图像new Image(),则可以使用onload事件来确定所有图像何时加载,然后设置尺寸。

于 2013-02-27T16:18:31.900 回答
0

有一个类似的案例:

我如何知道对 jquery html() 的更改何时完成?

建议的解决方案是为要在 HTML 渲染后执行的代码添加超时 1(而不是 0),因为超时代码在 JavaScript 唯一线程完成其渲染内容后执行。

希望这适用于您的情况。

于 2013-02-27T16:21:40.000 回答