如何将 "crossorigin" 标记添加到动态加载的脚本中?

How do I add the "crossorigin" tag to a dynamically loaded script?

上下文:To quote the Mozilla documentation:

Normal script tags will pass minimal information to the window.onerror for scripts which do not pass the standard CORS checks. To allow error logging for sites which use a separate domain for static media, several browsers have enabled the crossorigin attribute for scripts using the same definition as the standard img crossorigin attribute.

我们意识到,自从我们将 javascript 移至 CDN 后,我们的脚本就遇到了这个问题。我们将 crossorigin 属性添加到我们的脚本标签,这对 "hardcoded" 脚本标签工作正常,但我们动态加载了一些脚本,我不知道如何添加 crossorigin标记这些脚本。

在Chrome 40: 如果我使用 Javascript 动态添加脚本标签,如下所示:

var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.charset = 'utf-8';
script.crossorigin = 'anonymous';
script.src = some_url_on_another_domain;
head.appendChild(script);

我希望将 crossorigin 标记添加到插入到我的文档中的脚本标记中。但是,当我检查 Developer tools 中的脚本标签时,它显然不存在。 (我可以验证 origin header 在请求脚本时未在请求 header 中设置。)

现在,我退回到对这些跨域脚本使用 ajax 请求,因此有变通办法,但现在我很好奇是否可以在动态脚本标签上添加 crossorigin 标签。

嗯,我发现了我的问题。

这个:

script.crossorigin = 'anonymous';

应该是这样的:

script.crossOrigin = 'anonymous';

注意大写的“O”。该属性在 HTML 中未大写,但在 JS 界面中大写。很高兴知道!

尴尬,但我决定让我的错误永垂不朽,而不是删除问题,以防其他人犯同样的问题。