我有一个HTMLInputHidden控件,我将一个带有\ 0的字符串放入其中。现在我不希望它作为Null终止字符工作,但是在IE中,当在代码中获取HTMLInputHidden控件的.Value时,\ 0之后的任何内容都消失了。在Chrome中它不是。运行window.alert时("第一个\ 0秒");我们也从IE(仅限第一部分)到Chrome(完整字符串)获得不同的结果。
警告部分我可以理解为有人向我解释过,它使用底层浏览器代码,IE可能正在使用C \ C ++,因此它被终止,但HTMLInputHidden是否也使用底层代码?如果有人能回答为什么会发生这种情况,我会非常感激!
谢谢, 理查德
答案 0 :(得分:1)
所有版本的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()
在NUL处停止打印。您可以使用自己的代码处理可能包含NUL字符的字符串来避免这种情况。
答案 1 :(得分:0)
此处描述了NULL字符:
JavaScript RegExp \0 Metacharacter
I.E的行为与上面描述的页面相同。对于Chrome,请尝试:
new RegExp("\\0")
or simply:
/\0/
作为第二种方法,修改JavaScript以查找HTML Special Character。