gpt4 book ai didi

javascript - 暂停 JavaScript ||卡住页面

转载 作者:行者123 更新时间:2023-11-28 01:05:45 25 4
gpt4 key购买 nike

我想知道是否有一些解决我的“问题”的方法。

我玩一个通过 Greasemonkey/Firefox 使用 Javascript/jQuery 自定义的游戏。

有很多脚本可以修改 DOM 和一些输入值。在我的自定义脚本中,我使用 ajax 调用,大约需要 15-20 秒才能完成,但那时页面已修改,所以我到达了这里。

我想我必须以某种方式停止一切,所有 javascript,完全卡住页面,直到我的 ajax 完成,但请记住,我无法控制/修改页面上的所有脚本。根据我的经验..一切皆有可能,我现在错了吗? ..谢谢。

最佳答案

抱歉,虽然已经有一段时间了,但是您发布的情况比我想象的更引起了我的注意。所以我检查了很多可能性,最后我建议以下一种:

var _setTimeout;
var _clearTimeout;
var _setInterval;
var _clearInterval;
var _pauseOn;

_setTimeout = window.setTimeout;
_clearTimeout = window.clearTimeout;
_setInterval = window.setInterval;
_clearInterval = window.clearInterval;
_pauseOn = false;

window.setTimeout = function(code, delay) {
return _setTimeout(function () {
if (_pauseOn == true) {
return;
}
code();
}, delay);
};
window.clearTimeout = function(intervalId) {
if (_pauseOn == true) {
return;
}
_clearTimeout(intervalId);
};
window.setInterval = function(code, delay) {
return _setInterval(function () {
if (_pauseOn == true) {
return;
}
code();
}, delay);
};
window.clearInterval = function(intervalId) {
if (_pauseOn == true) {
return;
}
_clearInterval(intervalId);
};

function pauseTimer() {
_pauseOn = true;
}

function resumeTimer() {
_pauseOn = false;
}

/*
* To test:
* shift + p --> pause game
* shift + r --> resume game
*/
$(window).keypress(function(event) {
if (event.shiftKey) {
switch (String.fromCharCode(event.which).toLowerCase()) {
case 'p':
event.preventDefault();
pauseTimer();
break;
case 'r':
event.preventDefault();
resumeTimer();
break;
}
}
});

我希望这一点能够得到重视。

诗。使用 tetris.js 进行查看和测试(Copyright (c) 2006 Franck Marcia)您可以在原始源代码中看到游戏的暂停和恢复方法并不是简单地实现为停止计时器,但这足以达到解决方案您需要!

关于javascript - 暂停 JavaScript ||卡住页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098691/

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