gpt4 book ai didi

javascript - window.onload 未在页面刷新时运行

转载 作者:行者123 更新时间:2023-11-29 16:14:09 25 4
gpt4 key购买 nike

我刚开始使用 RequireJs。只有一个问题。有人可以解释为什么 require block 中的代码不在页面刷新时运行。 它仅在我清除缓存时运行

例子:

require(['game','comm','misc','soundutil','sprite','gui','constants'],function(Game,COMM,MISC,SoundUtil,Sprite, Gui,CNT){

window.onload = function () {
var canvas = document.getElementById('gameCanvas'),
game = document.getElementById('game'),
g = null,su = null;

canvas.width = document.body.clientWidth;
canvas.height = document.body.clientHeight;
console.log('Gamestate at beginning',CNT.GameState._current);

谢谢

最佳答案

您的问题中的代码看起来并不完整,但我将假设如下。您所描述的看起来像是竞争条件:

  • 当缓存不包含您的数据时,对 window.onload 的赋值发生在 onload 甚至被触发之前,因此您的处理程序被调用。

  • 当缓存已经包含您的数据时,onload 事件会在 分配给 window.onload 之前触发,所以你的处理程序永远不会被调用

我建议使用 domReady plugin因为它旨在处理这两种情况。我自己从未使用过它,但从我可以从 documentation 中收集到的信息来看,类似于:

require(['domReady!', 'game','comm','misc','soundutil','sprite','gui','constants'],...

应该可以。顺便说一句,感叹号不是打字错误。然后,您需要让您的 onload 处理程序成为您传递给 require 的函数的主体。

注意 document.onload 也有同样的问题。它更容易出现您遇到的问题,因为它经常在 window.onload 之前触发。

预计到达时间:正如 Shrike 所说,您还可以使用等待的 jQuery 方法:$(document).ready(...)。我的经验法则是,如果我已经在使用 jQuery(我在所有当前项目中实际上都在使用),那么我会使用 $(document).ready(...),否则我会使用 domReady。两种方法的区别已经详细考察了in this question .

关于javascript - window.onload 未在页面刷新时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19917436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com