我正在用Pyscript做实验,我试着打印一个HTML表,但是它没有工作。它似乎删除了标签,并且只删除了纯文本。
为什么会这样呢?我试着在网上搜索,但作为一种新技术,我没有找到多少。
这是我的密码:
<py-script>
print("<table>")
for i in range (2):
print("<tr>")
for j in range (2):
print("<td>test</td>")
print("</tr>")
print("</table>")
</py-script>这是我得到的输出:

我试图将print()方法替换为pyscript.write()方法,但它也不起作用。
发布于 2022-05-11 09:23:00
我挖掘源代码pyscript.py,此时我只使用类似于JavaScript的代码。
例如,这会添加<h1>Hello</h1>
<div id="output"></div>
<py-script>
element = document.createElement('h1')
element.innerText = "Hello"
document.getElementById("output").append(element)
</py-script>全工作代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PyScript Demo</title>
<!--<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />-->
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<div id="output"></div>
<py-script>
element = document.createElement('h1')
element.innerText = "Hello"
document.getElementById("output").append(element)
</py-script>
</body>
</html>编辑:
在深入研究源代码之后,我发现pyscript.js运行函数htmlDecode(),它从<py-script>中的代码中删除所有标记(可能还会在从文件加载代码时删除标记),这就产生了问题。
参见Pyscript问题:[BUG] print()不输出HTML标记。*问题#347·pyscript/pyscript
一些解决办法是使用一些替代方法。{{ }},而不是代码中的< > --然后使用代码将其替换回< >
print( "{{h1}}Hello{{/h1}}".replace("{{", "<").replace("}}", ">") )或者更通用的函数。
def HTML(text):
return text.replace("{{", "<").replace("}}", ">")
print( HTML("{{h1}}Hello{{/h1}}") )
pyscript.write(some_id, HTML("{{h1}}Hello{{/h1}}") )
document.getElementById(some_id).innerHTML = HTML("{{h1}}Hello{{/h1}}")有时问题也可能是pyscript.css,它重新定义了一些项和例如。<h1>看起来像普通文本。
一个解决方案是删除pyscript.css。
其他解决方案是使用来自pyscript.css的类,如在实例/index.html中。
<h1 class="text-4xl font-bold">Hello World</h1>这意味着
print( HTML('{{h1 class="text-4xl font-bold"}}Hello{{/h1}}') )https://stackoverflow.com/questions/72197815
复制相似问题