2010-02-02 64 views
1

我想从另一个页面嵌入一个数字。远程调用很小(只返回一个数字),但我希望页面在请求结束时继续加载。我应该怎么做?我目前正在做Javascript嵌入的代码不会暂停页面呈现

<span id="target">Loading ...</span> 
<script> 
var cb = function(data) { 
    document.getElementById("target").innerHTML = data; 
} 
</script> 
<script src="http://webnumbr.com/webnumbrs.latest.json(callback=cb)"></script> 

我打开客户端或服务器端的变化。只是最低的客户端代码中嵌入更好

回答

1

“官方”建议(请参阅rules)将所有JavaScript放在HTML文件的最底部。每个标记的内容将在渲染继续之前进行评估,因为脚本的结果可能会影响进一步的渲染(请参考document.write())。

+0

好吧,我给用户一些嵌入代码,所以让他们把一块他们想要的嵌入,而另一个在底部似乎不是很好... – 2010-02-02 08:11:17

0

我相信你正在使用AJAX来加载在加载当前页面的其他页面的内容,请确保您的AJAX调用是异步,并更新“webNumbr_webnumbrs”仅在成功完成后才进行控制。

+0

我应该如何确保它是异步的?我真的不想实例化一个XMLHTTPRequest对象,因为它会使客户端代码非常大。 – 2010-02-02 08:09:48

1

老实说,

我认为最好的办法可能是简单地把它放在一个onLoad()指令,以便它不会加载,直到文档已完全呈现。这与Tom的回答类似,但在这种情况下,您将消除您遇到的大部分DOM问题。

+0

这是支持?在'onLoad'上做我的功能?我一直害怕那个标签,因为它感觉不对...... – 2010-02-02 08:10:42

+0

它完全支持并推荐用于某些事情。任何会干扰页面渲染的事情,或者需要在启动之前完全渲染页面是放入onLoad语句的好主意。 http://www.w3schools.com/jsref/event_onload.asp – jerebear 2010-02-02 10:58:05

+0

有很少的元素支持'onLoad()'。我可以做'window.onLoad = function(){// stuff}'吗? – 2010-02-04 00:23:52