Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

捕获外部 js 文件的异常信息

  在现代浏览器上,页面的脚本错误在 error 事件中也会因同源策略而无法查看到详细信息,所有错误统一被置为「Script error.」这么一个没卵用的字符串。解决这个问题可以给引入的脚本文件加上 crossorigin="anonymous",但到底是要给抛错的脚本加还是给捕获错误的脚本加呢?
  我就一个疑问,这个设定到底是「保护外部 js 文件的错误信息不被页面捕获」还是「保护页面的脚本错误信息不被外部 js 捕获」?
  抱着这个疑问,我们试一波吧:
// throw.js setTimeout(() => { throw new Error('hehe'); }); // catch.js addEventListener('error', event => { document.body.appendChild(new Text(event.message)); });   首先,我们给 catch.js 加 crossorigin="anonymous" 是是? <script src="http://127.0.0.1:81/throw.js"></script> <script src="http://127.0.0.1:82/catch.js" crossorigin="anonymous"></script>
  结果依然是无法获取错误的详细信息。
  现在我们给抛错的脚本加上 crossorigin="anonymous" 呢?
<script src="http://127.0.0.1:81/throw.js" crossorigin="anonymous"></script> <script src="http://127.0.0.1:82/catch.js"></script>
  于是可以得到结论,这个设定的目的是「保护外部 js 文件的错误信息不被页面捕获」
  但是作为捕获的脚本,它自身也可能抛出异常,我们同样需要捕获它抛出的异常。所以给页面上所有外部 js 文件都加上 crossorigin="anonymous" 才能把异常捕获全。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^