我收到“脚本错误”。当捕获 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(使用前将#替换为@)