javascript - 脚本的动态加载显示同一 JS 文件的不同行为

标签 javascript dom browser

在我们的网站上加载 JS SDK 时,我尝试了几种不同的方法。 我注意到代码段 1 导致 CORS 错误,而代码段 2 在同一页面 上加载相同的脚本 没有任何问题。

片段 1(使用 document.body.appendChild,抛出 CORS 异常)

 const url = 'https://www.example.com/sdk.js';
 const scriptTag = document.createElement('script');
 scriptTag.setAttribute('crossorigin', 'anonymous');
 scriptTag.setAttribute('src', url);
 document.body.appendChild(scriptTag);

片段 2(使用 parentNode.insertBefore,无 CORS 异常)

 const element = document.getElementsByTagName('script')[0];
 const scriptTag = document.createElement('script');

 scriptTag.async = !0;
 scriptTag.crossorigin = 'anonymous';
 scriptTag.src = 'https://www.example.com/sdk.js';
 element.parentNode.insertBefore(scriptTag, element);

我试图找出每种情况下行为不同的原因,但找不到任何原因。

有人能指出我为什么会看到这种行为吗?

最佳答案

我看到运行您的代码的唯一区别是@Pointy 在评论中指出的点,第一个脚本生成:

<script crossorigin="anonymous" src="https://www.example.com/sdk.js"></script>

第二个:

<script async="" src="https://www.example.com/sdk.js"></script>

在我的控制台上运行,所以 crossorigin 可能对 cors 错误负责。 (同样的事情发生在控制台上,顺便说一句)

关于javascript - 脚本的动态加载显示同一 JS 文件的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60553195/

相关文章:

javascript - 找出两个元素的开始之间有多少像素?

JavaScript - 如果满足条件,则将内容包装在 DIV 中

google-chrome - </div></div> 自动关闭创建 child 不是兄弟

javascript - 如何从 JavaScript 中止加载外部 HTML 资源?

javascript - 仅在页面初始加载时启动 Pace.js

javascript - 将 'node' 环境添加到我的 .eslintrc 出现意外行为

javascript - 如何使用 Javascript (jQuery) 按顺序淡入 div?

javascript - 如何使用 JavaScript 获取文本输入字段的值?

html - 为什么单引号显示为双引号?

networking - Google Chat 服务器如何向数亿客户端推送通知?