标签之间的内容不会被当作文档内容解析,而会被用等宽字体直接呈现。从HTML3.2开始反对使用本元素,同时它不再会在之后版本内被推荐使用。在HTML5规范内,本元素已经完全被移除。但是,基本上所有的浏览器都对该标签支持。也多亏了这个,我才可以解决问题。
起初,我是页面异步加载显示内容,然后内容都直接innerText,所以页面不会解析js标签,然后我这边要变成同步加载,也就是不用js后台返回数据后直接显示,然后发现会直接解析标签,随便输入<script>alert(1)</script>,页面就会显示1.
此时当然相到先转义,但是因为我是小程序也显示,并且markdown编辑器好像直接输入标签不会转义,要规范化的用代码块,总之,因为各种原因没有转义,怎么办呢?
然后,我就想用如下代码解决,也就是显示的时候直接用js显示
<script>
var str="<script>alert(1)</script>";
document.write(zhuanyi(str));
</script>
zhuanyi()的意思是直接用innerText方法显示,然而发现这代码直接报错了,var str这里就解析不通过,语法不规范。
最后,发现了一个作废的<xmp>
标签,该标签可以直接显示内容,不会被浏览器解析,完美,然后加上如下样式,就跟一以前的样式一模一样啦
xmp{
font-family: generic-font;
white-space: normal;
}
第一个是等宽,第二是是换行,否则会只显示一行,感谢!感谢!