我正试图通过Firefox的setTimeout()在网站上运行Scratchpad。似乎有关于这种特殊JavaScript方法的各种Firefox错误 - 它是双胞胎,setInterval()
。在Firefox v.56和最新的Waterfox(都是“Quantum”之前的版本)中,这些JavaScript方法似乎根本不起作用。相比之下,在Firefox“Quantum”版本中,它看起来确实有效......也就是说,完全相同的代码在FF“Quantum”中工作,它使不立即工作 - “量子“Firefox的版本。是的,我已经尝试过all sorts of variations。
有一种情况,我坚持使用Firefox的pre-Quantum版本进行本练习,我需要找到一种方法来从最初的原则“构建”这个setTimeout()
方法,因为它是
一种想法是采用当前日期/时间,然后循环检查,看看是否已经过了10秒(或5分钟),然后再继续执行代码/脚本。
有关如何使用JavaScript有效地模拟setTimeout()
资源的任何想法,但 没有 setTimeout()
或setInterval()
?
--- --- EDIT
虚假警报......也可以让setInterval()
在旧浏览器中运行;我的坏!
(这意味着提出问题的原因已经消失,但问题可能仍然存在......)
---第二次编辑---
setTimeout()
在这里工作:
setTimeout(function(){ alert("Hello"); }, 3000);
它不起作用/似乎在这里被忽略:
i=0;
while(i < 100)
{
// window.open("https://www.cnn.com","_self");
// window.open("https://www.bbc.com","_self");
// setTimeout(function(){ alert("Hello"); }, 3000);
setTimeout(function(){ window.open("https://www.bbc.com","_self") }, 3000);
setTimeout(function(){ window.open("https://www.cnn.com","_self") }, 3000);
alert(i);
i++;
}
// security mgr vetoed ???
答案 0 :(得分:2)
如果您确实想要在不阻止浏览器的情况下模拟setTimeout
函数等等,可以尝试使用requestAnimationFrame
函数来获得一些延迟。它应该适用于Firefox 14.0+。这样的事情:
function mySetTimeout (callback, timeout) {
var startTime = performance.now();
function mySetTimeoutRec () {
requestAnimationFrame(function () {
// This way this function will be called
// asynchronously around 60 times per second
// (or less frequently on the inactive tabs).
// We can check that enough time has passed
// and call the user callback or this function again.
var currentTime = performance.now();
var elapsedTime = currentTime - startTime;
if (elapsedTime < timeout) {
mySetTimeoutRec();
} else {
callback();
}
});
}
mySetTimeoutRec();
}
它可以像setTimeout
:
mySetTimeout(function () { console.log('Howdy.'); }, 10 * 1000);
无论如何,在大多数情况下,你不应该尝试做类似的事情。如果你似乎遇到了setTimeout
的问题,可能还有其他问题。
答案 1 :(得分:1)
一种可能性是利用一个需要几秒钟的完整网络请求来完成:
<div class="parent">
<div>HEADER</div>
<div class="main">
<div class="side">
SIDE
</div>
<main>
MAIN
<ul>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
<li>testing 1.. 2.. 3..</li>
</ul>
</main>
</div>
<div>FOOTER</div>
</div>
&#13;
但是,不要完全准确地依赖它的时间安排。