Chrome 与边缘 Javascript 差异

Chrome versus Edge Javascript differences

有时我会收到 Javascript 文件(使用 Adob​​e Animate 创建)在 chrome 或边缘崩溃。在某些情况下,这些文件仅在 chrome 中崩溃,在某些情况下,它们仅在边缘崩溃。它总是 RangeError: "Maximum call stack size exceeded".

此行为的可重现性非常好,不会随机发生。

我通过“chrome://version/”检查了 v8 版本,两个浏览器的版本相同 (V8 9.7.106.18)

不知道怎么会这样?

(此处为 V8 开发人员。)

如果不进一步了解这些应用程序的功能,就很难确定。有几个因素在起作用:

  • 堆栈的最大大小(以字节为单位)。操作系统对此设置了一个上限,超过这个上限他们就会终止进程。为了避免这种情况,V8 将自己的限制设置为略低于它估计的 OS 限制。当 V8 版本相同时,我不希望在这方面有任何差异;但是我不知道 Edge 是否会用不同的限制覆盖默认值。
  • 每个栈帧的大小。只要V8版本相同,这也应该相同。它可能会受到优化决策的影响(给定函数的优化代码可以使用比相同函数的未优化代码更多或更少的堆栈 space),但如果 Edge 搞砸了优化策略,我会感到惊讶。
  • 被调用的函数,以及发生的任何递归调用的深度。在最简单的情况下,生成的 JS 可以检测到它 运行 在哪个浏览器中并表现不同。也可以想象 window 的大小起着一定的作用,例如如果代码遍历动态大小 canvas 的每个像素;或已存储在配置文件中的内容(LocalStorage 等)。如果您安装了任何浏览器扩展来改变页面的行为,那也可能会影响事情。如果不进一步了解应用程序 is/are 在做什么,就不可能排除任何事情。