2014-06-16 48 views
1

我有一個HTMLInputHidden控件,我將一個字符串放在\ 0中。現在我不希望這會作爲空終止字符,但是在IE中,當在代碼中獲取HTMLInputHidden控件的.Value時,\ 0之後的任何內容都消失了。在Chrome中不是。運行window.alert(「first \ 0second」);我們還從IE(僅限第一部分)到Chrome(完整字符串)獲得了不同的結果。HTMLInputHidden空終止字符

警告部分我可以理解,以前有人向我解釋過,它使用底層瀏覽器代碼和IE可能使用C \ C++,因此它被終止,但HTMLInputHidden也使用底層代碼嗎?如果任何人都可以回答爲什麼會發生這種情況,我會很感激!

感謝, 理查德

回答

1

U + 0000 NUL在所有HTML版本中都是禁止的。儘管HTML5 CR在HTML解析中爲它指定了錯誤處理規則,但已知NUL會導致瀏覽器出現問題。有人可能會認爲,HTML規則不適用於\0,只要HTML被考慮並且被JavaScript解釋器解釋爲NUL,它就是兩個可打印的Ascii字符。但是,在HTML文檔中使用NUL至少違反了HTML的精神,並且不應期望其可靠工作。

但是,您的問題似乎與IE上的alert()方法(以及其他方法)有關。如果你測試例如與window.alert("first\0second".length)並檢查字符串,您會看到NUL及其後的字符存儲在字符串中,但alert()在NUL處停止打印。你可以通過使用自己的代碼來處理可能包含NUL字符的字符串。

0

空字符描述如下:

JavaScript RegExp \0 Metacharacter

即是表現爲上面的頁面描述。對於Chrome瀏覽器,請嘗試:

new RegExp("\\0") 

or simply: 

/\0/ 

作爲第二個辦法,修改JavaScript來尋找一個HTML Special Character

+0

我的問題是爲什麼它顯示從IE瀏覽器到Chrome的不同結果? http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_regexp_nul如果在var str ...行之後添加一個帶有window.alert(str)的新行並在Chrome和IE中運行它,你會看到我的意思是(我希望)。 – Richard

+0

我這樣做了,當發現匹配時IE停止處理...在腳本編輯器中,16個字符並停止。 Chrome仍然會在16處找到該字符,但會顯示整個字符串。總之,當比賽被發現時,鉻不會停止,但是知道比賽是匹配的 – eyoung100