如何模拟$(window).load()函数?

3
我有一个ajax查询,返回包含许多$(window).load()函数的html代码。我需要再次调用所有这些函数。
我想通过重新调用$(window).load()方法来实现。 如何从我的代码中手动触发它?

请看下面我的回答,不小心我放了注释。 - Damian
你可以自己触发加载:$(window).load(handler).trigger('load'),虽然我猜如果可能的话,最好改变通过 AJAX 接收到的脚本。 - m90
$.ajax 加载的脚本块不会被执行。请参考 https://dev59.com/VXE85IYBdhLWcg3wmEtW 了解解决方法。 - Alnitak
这个问题解决了我的问题,我真的很需要在通过ajax调用内容后运行javascript。谢谢。 - Naveen Singh raghuvanshi
window.dispatchEvent(new CustomEvent("load")); - Belegnar
3个回答

10
你可以触发。
$(window).trigger( 'load' ); 

我个人不建议使用这种解决方案。这是一种不好的实践。你应该找到另一种解决方案,因为window加载事件可能与其他几个不同的回调函数相关联,你并不知道它们。


谢谢!我知道这不是一个好的方法,但我需要一个快速的解决方案,以便有时间编写正确的工作解决方案。基于事件。 - user1279525
1
这样做不起作用 - 当HTML加载时,脚本不会被执行,因此处理程序不会被注册。 - Alnitak

1

我认为这可以解决你的问题。test.js是你的JavaScript文件的名称。

$.getScript("ajax/test.js", function(data, textStatus, jqxhr) {
});

0
你可以引入简单的消息总线来实现这个目标。最初,你可以依赖于窗口的加载事件,后来你可以创建一个通知器模块来通知所有感兴趣的模块(代码)发生了什么事情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接