javascript - 微软边缘: setInterval() callback called concurrently with print()

标签 javascript printing setinterval microsoft-edge

我在 Microsoft Edge 中发现了一个看似错误的问题。 setInterval() 的回调有时会在 print() 执行时调用。这会导致 2 个 JavaScript 函数并行运行,这是不允许的,对吗?

可以使用这个简单的测试应用程序观察该行为。

index.html:

<!DOCTYPE html>
<html>    
  <head>
    <script src="script.js"></script>
  </head>
  <body>
    <input type="button" onclick="printPage()" value="Print"/>
  </body>
</html>

脚本.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

当我单击“打印”按钮时,我预计不会看到警报,但我确实观察到了警报。

环境:Microsoft Edge 38.14393.0.0、Windows 10

这是一个错误还是我不明白什么?

最佳答案

是的,这是一个已确认的错误。我有点惊讶的是,在我之前显然没有人报告过这一点。

https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10230373/

关于javascript - 微软边缘: setInterval() callback called concurrently with print(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41153360/

相关文章:

javascript - 单击 <button> 元素时的标准行为是什么?它会提交表格吗?

python - 将我的实时输出打印到txt文件不起作用python

c# - WebBrowser 打印设置

c# - 从 C# 打印标签 - 文档尺寸对于打印机来说太大

javascript - iOS 6 Safari ,setInterval 不会被解雇

javascript - 更改函数内的全局变量,以更改 setInterval 的第二个参数

javascript - 推送元素时检查元素之前的数组

javascript - 如何使用 .splice 删除虚假值?

javascript - setInterval 游戏循环的范围问题

javascript - ReactJs - 如何防止用户篡改/修改客户端代码中的相等性检查