我发现看起来是Microsoft Edge中的一个错误。 setInterval()的回调有时在print()执行时被调用。这导致2个并行运行的JavaScript函数不应该被允许,对吧?Microsoft Edge:与print()并发调用的setInterval()回调
这个简单的测试应用程序可以观察到的行为。
的index.html:
<!DOCTYPE html>
<html>
<head>
<script src="script.js"></script>
</head>
<body>
<input type="button" onclick="printPage()" value="Print"/>
</body>
</html>
的script.js:
var isPrinting = false;
setInterval(function tick() {
if (isPrinting) {
alert('Interval callback called conurrently with click handler!');
}
}, 10);
function printPage() {
isPrinting = true;
try {
print();
}
finally {
isPrinting = false;
}
}
https://plnkr.co/edit/eKMQEHjRiXzl1vzjzIEN
当我点击 “打印” 按钮,我不希望看到的警报,但我确实观察到一个警报。
环境:微软边缘38.14393.0.0中,Windows 10
这是bug还是我不懂的东西?
那么使用警报是一个坏主意调试。你真的想做什么?间隔的目的是什么? – epascarello
A在实际应用程序中遇到问题,并将问题缩小到plunkr中的测试用例。如果愿意,可以用console.log()替换alert()。我只是觉得警报让读者更容易。 – Mike