鼠标右键单击并显示上下文菜单时setTimeout不起作用

时间:2019-05-10 06:11:39

标签: javascript internet-explorer settimeout

我尝试在javascript中编写setTimeout函数,并遇到一些问题。 使用IE时,我单击鼠标右键并显示上下文菜单,setTimeout停止工作。

这是我的代码。

var t = 30000;
function myTimer(){
    if(t <=0 ){
        console.log('STOP');
    }else{
        setTimeout(myTimer, 1000);
        console.log(t/1000);    
    }
    t-=1000;
};

有人有这个问题吗? 谢谢。

2 个答案:

答案 0 :(得分:0)

您错过了调用timer函数的操作。尝试这样。

var t = 30000;
function myTimer(){
    if(t <=0 ){
        console.log('STOP');
    }else{
        setTimeout(myTimer, 1000);
        console.log(t/1000);    
    }
    t-=1000;
};

myTimer()

答案 1 :(得分:0)

我用您的示例代码进行了测试,并且能够产生问题。

这是测试结果。

enter image description here

根据我的测试结果,我发现该问题与 setTimeout 没有关系。我还使用此JS Coundown代码示例进行了测试,并且产生了同样的问题。

问题是在上下文菜单可见时IE暂停了JS代码的执行。

看起来是设计使然,我没有任何解决方案。

作为一种变通方法,您可以尝试使用JavaScript禁用右键单击(仅适用于IE),这可能有助于避免此问题。