【发布时间】:2011-11-01 22:16:44
【问题描述】:
我创建了一个类似于就地编辑插件的小功能。
它的作用:
- 点击获取元素的html内容:
var editable = $(this).html(); -
创建文本输入字段(如果存在则获取):
var input = ($('input', this).length > 0) ? $('input', this) : $('<input type="text" value="' + editable + '" />'), 用输入替换元素文本:
$(this).empty().append(input);
只有当可编辑文本不包含非编码的 HTML 字符时才有效。
如果它有像<>这样的HTML字符,它们会在第二步被转换为HTML代码,并弄乱输入元素......
我试图通过以下方式逃避它们:
editable = $('<div/>').text($(this).html()).html()
然后我得到一个带有转义 HTML 的文本输入 lol :)
我能做什么?
【问题讨论】:
-
真正重要的字符是'"',因为它关闭了你的 value="" 属性。但是你需要非常小心 XSS 注入。
-
是的
"似乎是问题所在,因为之后的所有文本都没有显示.. -
您希望您的输入文本框只显示包含所有 HTML 标签的内容吗?还是要删除 HTML 标记并仅显示文本?
标签: javascript jquery html-entities