PyScript中使用py-script标签能否动态更新innerHTML属性?
解决PyScript中设置innerHTML时HTML被剥离的问题
问题重现
你在py-repl中执行DOM操作能正常渲染HTML格式内容,但将相同代码放入py-script标签后,HTML标记被自动剥离,仅显示纯文本内容。
解决方案
不要直接通过JS的document对象操作DOM,改用PyScript官方封装的Element类来处理:
方法1:使用Element的innerHTML属性
<div id="charts">This is a <b>Test</b>.</div> <py-script> from pyscript import Element Element("charts").innerHTML = "This is <i>another</i> test." </py-script>
方法2:使用write方法并允许HTML渲染
<div id="charts">This is a <b>Test</b>.</div> <py-script> from pyscript import Element Element("charts").write("This is <i>another</i> test.", unsafe_allow_html=True) </py-script>
原因说明
在py-script块中直接通过js.document操作DOM元素的innerHTML时,Pyodide的Python-JS桥接机制会自动转义HTML特殊字符,导致标记被当成纯文本处理。而PyScript封装的Element类专门优化了DOM交互逻辑,能正确识别并渲染HTML内容;write方法默认以纯文本模式写入内容,因此需要显式开启unsafe_allow_html=True参数来允许HTML解析渲染。
内容的提问来源于stack exchange,提问作者Paul Barry
相关产品推荐
相关产品推荐

