“脚本错误。”仅在 Safari 中出现 window.onerror 错误

2023-11-23

我收到“脚本错误”。当捕获 window.onerror 中的错误时,即使在 S3 上正确(我认为)配置了 CORS 标头。

CORS配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

HTML:

<script crossorigin src="https://s3.amazonaws.com/safari-script-error/foo.js" />

其中包含:

window.addEventListener("keydown", function(event) {
  if (event.keyCode === 69) { // "e" button
    throw new Error("Oh shoot");
  }
});

JS:

window.onerror = function(event) {
  console.log(event);
}

代码笔:https://codepen.io/astashov/pen/yoEvRB

它在 Chrome、Firefox 和 IE11 中运行良好,仅显示“脚本错误”。在 Safari 中(我有版本 10.0.3 (12602.4.8))。

如何让它在 Safari 中也能工作?


如何让它在 Safari 中也能工作?

你不能。当前的 Safari 版本不支持向onerror跨源情况下的回调——即使crossorigin属性指定在script元素。

Safari 之前确实支持它,但后来在某个时候又退化了。

有一个未解决的错误https://bugs.webkit.org/show_bug.cgi?id=132945

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“脚本错误。”仅在 Safari 中出现 window.onerror 错误 的相关文章

随机推荐