【发布时间】:2021-01-19 21:11:16
【问题描述】:
我在几个地方读到过,当我们使用 React dangerouslySetInnerHTML 插入 html 片段时,脚本没有被执行。
但是我只是尝试插入这个:
<img src= "img.png" onload="alert('picture loaded')" alt="script test">
警报被触发了。
这并不让我感到惊讶(这就是我首先进行测试的原因),但我想更好地理解“脚本不执行”的含义。
我的问题:
- 除了我上面的例子,还有其他类型的脚本 会执行吗?
- 有没有办法完全阻止脚本执行, 包括嵌入在我的示例中的 html 事件处理程序中的那些?
- 如果脚本标签定义了一个函数,该函数是否仍然存在? 已加载并可稍后调用?
- 还有其他我应该注意的行为吗?
[编辑] 我在一个函数组件中使用dangerouslySetInnerHTML:
const htmlString = '<img src="img.png" onload="alert('picture loaded')" alt="script test">'
在返回语句(JSX)中:
return <div dangerouslySetInnerHTML={{__html: htmlString}} />
【问题讨论】:
-
你是如何插入这个的?
-
我在帖子中添加了更多信息。希望答案不取决于使用 SetInnerHTML 的危险程度。
标签: reactjs dangerouslysetinnerhtml