我有一个 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/