有没有办法暂停执行javascript直到整个页面加载到浏览器中?我正在使用AJAX更新文档底部的div但是当我在加载整个页面之前单击此链接时出现错误...
<%= link_to_remote 'Update', :update => 'div_at_the_bottom', :url => { :usual_stuff } %>
答案 0 :(得分:3)
最简单的方法是在window.onload
上执行所有操作:
window.onload = function() {
// do everything here
}
你也可以在</body>
之前将你的javascript放在页面的末尾。这样,无论你操作什么对象都保证在DOM中。
正如其他人所说,一些JS框架在DOM加载时有一个运行JS的好方法。这样做的主要优点是你不会得到JS相当于“无格式内容的闪存”,即看到一个(可能是丑陋的)形式的元素,然后在整页加载后更改。
答案 1 :(得分:2)
禁用生成的链接并在加载dom时启用它:
停用链接:
<%= link_to_remote 'Update',
{ :update => 'div_at_the_bottom', :url => { :usual_stuff } },
{ :disabled => 'disabled', :id => 'update-trigger' }
%>
(请注意,为了能够将此额外选项传递给link_to_remote
,您需要通过使用curles "options"
包装它来明确显示[2nd] {}
哈希。{{3} })
然后在某个地方(包含原型js lib之后的任何地方)在DOM加载时启用链接(这类似于大家迄今为止所说的那样):
<script>
$(document).observe('dom:loaded', function() {
$('update-trigger').disabled = false
})
</script>
这个解决方案在语义上也同意,如果这对你很重要(对我而言)。
答案 2 :(得分:1)
如果您使用jQuery之类的JavaScript库,则可以轻松地将任何javascript代码绑定到DOM ready事件,并避免此类问题。