【发布时间】:2016-06-07 11:45:34
【问题描述】:
我正在尝试使用 React 中的 dangerouslySetInnerHTML 属性将从我的服务器发送的 html 设置为在 div 中显示。我在其中也有脚本标记,并使用在该 html 中定义的函数。我在 JSFiddle here 中做了错误示例。
这是测试代码:
var x = '<html><scr'+'ipt>alert("this.is.sparta");function pClicked() {console.log("p is clicked");}</scr'+'ipt><body><p onClick="pClicked()">Hello</p></body></html>';
var Hello = React.createClass({
displayName: 'Hello',
render: function() {
return (<div dangerouslySetInnerHTML={{__html: x}} />);
}
});
我检查了脚本标签已添加到 DOM,但无法调用该脚本标签中定义的函数。如果这不是正确的方法,是否还有其他方法可以注入脚本标签的内容。
【问题讨论】:
-
您不能将
<html>放在<div>中。 -
@fl0cke 你可以,这不是问题。如果那会是一个问题,那么内容将不可见,但它们被正确地赋予了任何复杂的 html,但问题在于脚本标签。即使您删除了 html 标签并将
<script>和<p>标签放在字符串中并尝试将它们放入 div 中,它也不起作用。 -
也许这个问题可以帮助:stackoverflow.com/questions/1197575/…
-
不知道为什么它不起作用。当你 just use
document.createElementto create the script tag 时它可以工作。
标签: javascript html reactjs script-tag