2013-02-27 70 views
0

我使用iCanHaz.js来交换屏幕,但是我需要一个函数在新内容完全加载完成时触发。我之前可以通过使用setTimeout 0来使调用异步,但在具有大量图像的页面上,这似乎很快就没有实现。onready/onload for document.innerHTML change

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); 
} 

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

+0

您错过了',毫秒);'在您的代码中 – mplungjan 2013-02-27 16:05:37

+0

不是您正在寻找的答案,但是如果您在标签中指定了图片的高度和宽度,则将保留适当的空间量对于他们来说,即使他们还没有加载,这可能会解决你的问题。 – rjmunro 2013-02-27 16:05:40

+0

@mplungjan yup ..这是一个错误在转录,而不是在我的代码..修复。 – Damon 2013-02-27 16:08:07

回答

0

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

0

有一个类似的情况中的问题:作为超时代码执行

How can I tell when changes to jquery html() have finished?

所提出的解决方案是增加的1(不为0),用于代码HTML呈现之后被执行时,一个超时在JavaScript独占线程完成其渲染的东西之后。

希望适合您的情况。

+0

不起作用 – Damon 2013-02-27 16:39:06