Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在“完成页面加载”和“在所有外部脚本执行之后”调用函数?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何在“完成页面加载”和“在所有外部脚本执行之后”调用函数?

Javascript 如何在“完成页面加载”和“在所有外部脚本执行之后”调用函数?,javascript,jquery,html,Javascript,Jquery,Html,如何在完成页面加载和所有外部脚本执行后调用函数 我尝试了下面所有4个选项,但没有运气 $(document).ready.. $(window).load... window.onload = ... $(document).ready(function()... 设置超时对我来说很有效,但不确定这是否100%有效 setTimeout(function(){ //your code here }, 3000); 请提供建议和帮助 脚本按照它们在HTML中的显示顺序加载和执行。如果您有简单的

如何在完成页面加载和所有外部脚本执行后调用函数

我尝试了下面所有4个选项,但没有运气

$(document).ready..
$(window).load...
window.onload = ...
$(document).ready(function()...
设置超时对我来说很有效,但不确定这是否100%有效

setTimeout(function(){
//your code here
}, 3000);

请提供建议和帮助

脚本按照它们在HTML中的显示顺序加载和执行。如果您有简单的脚本,只需将稍后要运行的内容放在底部即可


但是,如果您有异步运行的复杂脚本,这意味着它们是并行运行的,那么在不实际查看它们的执行情况的情况下,就不可能知道它们是否已完成执行。例如,它们是否会或能否触发您可以收听的事件?或者你可以使用承诺模式。

我对你的问题非常感兴趣,深入到jQuery源代码,我想出了一个疯狂的破解方法: 但关键的一点是,在插入jQuery之后,您应该将这段代码放在最开始的地方:

现在,无论何时您想要执行某项操作。就绪功能完成后,您可以执行以下操作:

$(document).on("afterReady", function () {
    alert("Hey, the ready functions are executed");
});

我认为您的外部脚本应该在某个地方包含一个回调函数来保存您的函数。这些外部脚本可能在$document.ready.时执行。是的,但我没有任何权限更新这些外部脚本以进行更新。哦,好的。。。是的,我的外部脚本是异步并并行运行的。。。对不起,我不是提前在JS,是怎么做的。例如,它们是否会或能否触发您可以收听的事件?或者您可以使用promise模式。除非您告诉我们具体运行的是什么,否则我们无法告诉您具体情况,因为每个脚本都不同。感谢您提供的解决方案,但这是什么$.statesum++;做你能解释一下你的逻辑吗?@Sandeep这个逻辑是jQuery承诺背后的。我正在更改jQuery ready函数实现,这样当一个函数传递给它时,它将增加一个计数器,并向函数添加一个回调,该回调将减少计数器,如果计数器变为0,它将触发afterReady事件。
$(document).on("afterReady", function () {
    alert("Hey, the ready functions are executed");
});