Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTMLInputHidden空终止字符_Javascript_Html - Fatal编程技术网

Javascript HTMLInputHidden空终止字符

Javascript HTMLInputHidden空终止字符,javascript,html,Javascript,Html,我有一个HTMLInputHidden控件,我在其中放入一个带\0的字符串。现在我不希望它作为空终止字符工作,但是在IE中,当在代码中获取HTMLInputHidden控件的.Value时,\0之后的任何内容都会消失。在铬合金中不是。运行window.alert时(“第一\0秒”);从IE(仅第一部分)到Chrome(完整字符串),我们也得到了不同的结果 正如之前有人向我解释的那样,我能理解的警报部分是,它使用底层浏览器代码,IE可能使用C\C++,因此它将被终止,但HTMLInputHidde

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

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

谢谢,
Richard

此处描述了空字符:

即,E的行为如上述页面所述。对于Chrome,请尝试:

new RegExp("\\0")

or simply:

/\0/

作为第二种方法,修改JavaScript以查找错误

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


但是,您的问题似乎在于IE上的
alert()
方法(可能还有其他方法)。如果您使用
window.alert(“first\0second.length”)
进行测试并检查字符串,您将看到NUL及其后的字符存储在字符串中,但
alert()
在NUL时停止打印。您可以通过使用自己的代码来处理可能包含NUL字符的字符串来避免这种情况。

我的问题是,为什么IE和Chrome显示的结果不同?如果在变量str之后。。。行你添加一个新的行窗口。警报(str)和运行在铬和IE你会看到我的意思(我希望)。我做到了,IE停止处理时,发现一个匹配。。。在脚本编辑器中,输入16个字符并停止。Chrome仍会在16处找到该字符,但会显示整个字符串。简而言之,chrome不会在找到匹配项时停止,而是知道存在匹配项