gpt4 book ai didi

javascript - GWT:setInnerHTML 取消转义属性值

转载 作者:行者123 更新时间:2023-12-02 19:30:31 26 4
gpt4 key购买 nike

该字符串:<a onclick="doit('&#39;')">...</a>从服务器端接收,需要设置为元素的内部 HTML。

当我使用Element#setInnerHTML时该字符串转换为 <a onclick="doit(''')">...</a> ,即将 HTML 实体转义为其表示的字符。

如何在不进行实体转换的情况下执行内部 HTML 分配?

澄清:内部 HTML 赋值仅对属性值内的实体进行转义。

最佳答案

setInnerHTML() 实现本身没有问题,因为它的唯一作用是将属性值分配给底层 JS 对象,通过检查 Element 可以看出的源代码:

public final native void setInnerHTML(String html) /*-{
this.innerHTML = html || '';
}-*/;

问题出在浏览器内部,无意地遵循HTML文档表示规范中的字符集实体引用指南并解析允许的实体属性节点内的strong>(因此被解析)。

来自规范:

Authors should also use "&amp;" in attribute values since character references are allowed within CDATA attribute values.

解决方案

在服务器端(或通过过滤器或指定的客户端代理),使用相应的 HTML 实体对属性值内的所有特殊字符进行转义,例如:

<a onclick=\"doit('&amp;#39;')\">...</a>

W3C 引用

关于javascript - GWT:setInnerHTML 取消转义属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11545012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com