是否在触发事件后注册jQuery(window).load(…)事件?

是否在触发事件后注册jQuery(window).load(…)事件?,jquery,Jquery,我是这个小组的新成员,刚刚问了一个关于jQuery(window.load(function(){})的简单问题 我有一个外部JS文件,在窗口加载事件发生后动态插入页面。在这个JS文件中,我有一个声明如下: jQuery(window).load(function() { alert("Something"); }); 我的问题是,上面的alert()语句是否会执行,因为当我的上述函数注册到windowload事件时,事件已经触发了。我希望上面的警报会立即触发,因为它应该等待的事件已经

我是这个小组的新成员,刚刚问了一个关于jQuery(window.load(function(){})的简单问题

我有一个外部JS文件,在窗口加载事件发生后动态插入页面。在这个JS文件中,我有一个声明如下:

jQuery(window).load(function() {
    alert("Something");
});
我的问题是,上面的alert()语句是否会执行,因为当我的上述函数注册到windowload事件时,事件已经触发了。我希望上面的警报会立即触发,因为它应该等待的事件已经完成

我很欣赏你的想法


谢谢

否,它不会触发,但是,您可以在插入后调用事件,如下所示:

$(window).load(); //or.. $(window).trigger('load');
  setTimeout(->
    on_window_load_safe ->
      console.debug 'on_window_load_safe called me'
  , 2000)
这将触发该代码运行


使用
document.ready
将在文档准备就绪后立即启动,但
$(window).load(function(){…})
显式绑定到已启动的窗口加载事件。

这个问题也让我感到棘手。我想在页面加载之后添加'load'回调可能会有风险,因为如果已经触发'load'事件,它根本不会被调用

我完全同意——我也希望我的回调会立即被调用,因为它应该等待的事件已经完成。这似乎与文档“就绪”事件在文档已经就绪时立即触发回调的方式更为一致

以下是我的解决方法,用咖啡脚本编写:

$(window).on 'load', ->
  window._loaded = true

window.on_window_load_safe = (callback) ->
  if window._loaded
    # Since the load even already happened, if we tried to add a new callback now, it would not even
    # get called. So just call the callback immediately now.
    callback.call()
  else
    $(window).on 'load', ->
      callback.call()
您可以使用以下方法进行测试:

$(window).load(); //or.. $(window).trigger('load');
  setTimeout(->
    on_window_load_safe ->
      console.debug 'on_window_load_safe called me'
  , 2000)

可能应该使用
jQuery(document)。改为加载(…)
。另外:当前发生了什么?当前不会触发。我认为立即启动该功能更有意义。因为,编码人员打算在窗口onload事件发生后执行他的函数,而jQuery应该足够智能,能够理解既然事件发生了,我们应该立即调用该函数。jQuery提供了一种机制:
$(document).ready(function(){})
,为什么这段代码不使用它,是否需要加载图像?此代码在页面上嵌入了一些flash,并考虑到一些延迟问题,我不希望在flash上阻止加载事件以完成加载。因此,我想在窗口加载事件发生后嵌入此flash。另外,整个嵌入逻辑都在一个外部JS文件中,该文件也是在load事件之后获取的,这就是为什么我有这个问题。谢谢您的回复。:)谢谢我原以为这种行为会更聪明一点,但我明白你的意思。我将尝试在加载事件实际触发之前将函数注册到加载事件。(以上评论中有更多内容)。