Если в сообщении об ошибке Javascript указано «Ошибка сценария», невозможно извлечь сообщение об ошибке фактическое через Javascript.Хотя пользователь может просматривать консоль своего браузера, чтобы увидеть подробности об ошибках, подробности об перекрестных источниках не будут каким-либо образом предоставлены вашему Javascript по соображениям безопасности.
Чтобы смягчить это, если это вообще возможно,Предполагается, что пользователи используют библиотеки с сайтов, которые не имеют ограничения CORS.Сайт, на котором размещена библиотека, должен иметь и
access-control-allow-origin: *
access-control-expose-headers: *
, чтобы отследить ошибки, возникающие в сценариях, размещенных на этом сайте.Например:
<script src="https://cdn.jsdelivr.net/npm/babel-standalone@6.10.3/babel.min.js"></script>
Поскольку jsdelivr имеет оба этих заголовка, сгенерированные ошибки будут доступны для просмотра.(Простите хаки фрагментов стека, но это демонстрирует проблему:)
-->
</style>
<script src="https://cdn.jsdelivr.net/npm/babel-standalone@6.10.3/babel.min.js"></script>
</script>
</head>
<body>
<script src="/scripts/snippet-javascript-console.min.js?v=1"></script>
<script type="text/babel">Invalid syntax
</style>
<!--
Если библиотека поступает с сайта без обоих этих заголовков, ошибка будет непрозрачной.Например, этот фрагмент идентичен приведенному выше, за исключением того, что ссылка на сайт без access-control-expose-headers: *
:
-->
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.10.3/babel.min.js"></script>
</script>
</head>
<body>
<script src="/scripts/snippet-javascript-console.min.js?v=1"></script>
<script type="text/babel">Invalid syntax
</style>
<!--
Если у вас нет никакого контроля над тем, какие ссылки библиотеки используются пользователями, вы ничего не можете сделать, чтобы получить доступ к непрозрачным ошибкам, если только вы не можете получитьчтобы установить собственное расширение для браузера (которое имеет повышенные привилегии) или что-то в этом роде.