javascript - HTMLInput隐藏空终止符

标签 javascript html

我有一个 HTMLInputHidden 控件,我在其中放入一个带有\0 的字符串。现在我不希望它作为空终止字符工作,但是在 IE 中,当在代码中获取 HTMLInputHidden 控件的 .Value 时,\0 之后的任何内容都会消失。在 Chrome 中则不然。运行 window.alert("first\0second"); 时我们还从 IE(仅第一部分)到 Chrome(完整字符串)得到不同的结果。

我可以理解警报部分,正如有人之前向我解释的那样,它使用底层浏览器代码,而 IE 可能使用 C\C++,因此它被终止,但 HTMLInputHidden 是否也使用底层代码?如果有人能回答为什么会发生这种情况,我将非常感激!

谢谢, 理查德

最佳答案

所有版本的 HTML 中都禁止 U+0000 NUL。尽管 HTML5 CR 在 HTML 解析中为其指定了错误处理规则,但已知 NUL 会导致浏览器出现问题。可能有人会说,HTML 规则不适用于 \0,就 HTML 而言,它只是两个可打印的 Ascii 字符,并被 JavaScript 解释器解释为 NUL。但是在 HTML 文档中以这种方式使用 NUL 至少违反了 HTML 的精神,并且不应期望能够可靠地工作。

但是,您的问题似乎出在 IE 上的 alert() 方法(可能还有其他方法)上。如果你测试例如使用 window.alert("first\0second".length) 并检查字符串,您将看到 NUL 及其后面的字符存储在字符串中,但是 alert() code> 在 NUL 处停止打印。您可以使用自己的代码来处理可能包含 NUL 字符的字符串来规避此问题。

关于javascript - HTMLInput隐藏空终止符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24250556/

相关文章:

javascript - 间歇性引用错误 : $ is undefined

jquery - 如何使用 jQuery 比较两个值?

javascript - 绑定(bind)到 .load() div 内的控件事件

javascript - 从 browserify 包中删除重复的模块

javascript - IE 8 的条件注释不起作用

javascript - IE 中的 SWFObject 问题

html - 为li添加边框时出现错误

javascript - 如何使用 javascript 创建表格

javascript - AngularJS 中的动态路由问题

javascript - 电话号码的正则表达式