我有一个内容可编辑的div,这是我的搜索框。我需要在C中添加堆栈跟踪,其中包含由大括号包围的内存地址。当我在搜索框中插入此文本时,它被视为html标记。我该怎样避免这种情况?
我在div中粘贴的内容示例:
[<ffffffff810733ff>] do_exit+0x15f/0x870
[<ffffffff8109dc25>] ? sched_clock_local+0x25/0x90
[<ffffffff81088792>] ? __dequeue_signal+0x102/0x200
[<ffffffff81073b68>] do_group_exit+0x58/0xd0
粘贴后的div元素。
<div id="searchBox"
contenteditable="true">do_exit+0x15f/0x870[<ffffffff8109dc25>] ?
sched_clock_local+0x25/0x90[<ffffffff81088792>] ?
__dequeue_signal+0x102/0x200[<ffffffff81073b68>] do_group_exit+0x58/0xd0
</div>
答案 0 :(得分:2)
有些浏览器支持contenteditable="plaintext-only"
,这可以解决您的问题。但是,不支持此功能的浏览器甚至可能无法使div满足。
示例:
<div contenteditable="plaintext-only"></div>
此问题的更好解决方案可能是使用原生<input>
或<textarea>
- 那些应该为您处理此问题。
答案 1 :(得分:2)
属性contenteditable
+非正式值"plaintext-only"
已经回答。
如果您复制/粘贴这些,括号将变为html实体。
如果这已经存在于您的代码中,那么您应该在服务器端对此进行处理。
无论如何这里是一个额外的选项,如果你仍想在这些代码周围使用html标签,你可以尝试使用旧标签<xmp>
:
关于它的说法是什么:https://www.w3.org/wiki/HTML/Elements/xmp ......自己使用。
<div id="searchBox"
contenteditable="true"><xmp>do_exit+0x15f/0x870[<ffffffff8109dc25>] ?
sched_clock_local+0x25/0x90[<ffffffff81088792>] ?
__dequeue_signal+0x102/0x200[<ffffffff81073b68>] do_group_exit+0x58/0xd0
</xmp></div>
正确的方法是:(在发送到浏览器或保存之前使用htmlentities()或类似方法处理括号。)
[contenteditable] {
white-space:pre;
}
<div contenteditable="true">do_exit+0x15f/0x870[<ffffffff8109dc25>] ?
sched_clock_local+0x25/0x90[<ffffffff81088792>] ?
__dequeue_signal+0x102/0x200[ffffffff81073b68>] do_group_exit+0x58/0xd0</div>