【发布时间】:2018-12-12 16:07:37
【问题描述】:
我正在尝试在我的 React 组件中间加载一个外部脚本。
import React from 'react';
class Test extends React.Component {
componentDidMount() {
const script = document.createElement("script");
script.src = "http://example.com/form.js";
this.myDiv.appendChild(script);
}
render() {
return <div ref={e => (this.myDiv = e)} />;
}
}
不幸的是,外部脚本包含document.write。因此,当我尝试加载它时它给了我一个错误:
Failed to execute 'write' on 'Document': It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened.
这个错误很容易理解。由于脚本是在文档被解析之后运行的,所以不能使用document.write。
我有什么办法来解决这个问题?
到目前为止我做了什么:
到目前为止,我已尝试使用 Krux 的 postscribe 模块,但未能成功:
import React from 'react';
class Test extends React.Component {
render() {
return (
<div>
<div id="myDiv" />
<script dangerouslySetInnerHTML={{
__html: postscribe(
"#myDiv",
<script src="http://example.com/form.js" />
)
}} />
</div>
);
}
}
非常感谢任何帮助
【问题讨论】:
标签: javascript html reactjs