Mar*_*ník 6 html javascript reactjs next.js
我一直在尝试将外部 JavaScript 源嵌入到我的 Next.js 应用程序中,但不断收到以下错误:
无法对“文档”执行“写入”:除非显式打开,否则无法从异步加载的外部脚本写入文档。
我尝试使用的代码可以在这里找到- 带有船只的地图可以选择嵌入它。到目前为止,生成此错误的组件如下所示:
<div className={styles['container']}>
<Script type="text/javascript">
var width="100%";var height="400"; var mmsi=228402900;
</Script>
<Script
type="text/javascript"
src="https://www.vesselfinder.com/aismap.js">
</Script>
</div>
Run Code Online (Sandbox Code Playgroud)
如果我将嵌入代码复制到 CodePen 中,它就可以正常工作 -链接到我的带有嵌入地图的 codepen。
有人知道这里可能有什么问题吗?
出现此问题的原因是外部脚本由 异步加载next/script,从而忽略了document.write()脚本中存在的调用。
来自Document.write()MDN 文档:
注意:
document.write()在延迟或异步脚本中使用将被忽略,并且您将document.write()在错误控制台中收到类似“异步加载的外部脚本的调用被忽略”的消息。
您需要将Script策略设置为beforeInteractive,以便将脚本添加到<head>,并显式将该defer属性设置为false,以防止异步加载脚本。
<Script
type="text/javascript"
src="https://www.vesselfinder.com/aismap.js"
strategy="beforeInteractive"
defer={false}
></Script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |