我正在從Microsoft堆棧(即WPF)轉換到HTML5,因此事先對這個問題的相當業餘性質表示道歉。因爲它與文本框有關的HTML編碼/解碼
手頭的主題是HTML編碼和解碼。
考慮一個HTML5應用程序通過HTTP對C#後端進行AJAX調用。服務器專門返回JSON格式的數據,始終確保使用HttpUtility.HTMLEncode()
對JSON值字段進行HTML編碼。
HTML5客戶端反向執行相同的過程。所有發佈到服務器的數據首先使用簡單的JavaScript幫助函數進行HTML解碼。
我的HTML5應用程序中所有可能可顯示的字符串數據都以其HTML解碼形式存儲並傳遞。這個方案對我來說很好。但是,今天我發現了HTML5文本框,並且發現了一些奇怪的東西。文本框似乎不像編碼文本。
如果非要定義爲這樣一個文本框中:
<input id="festus" type="text"/>
和更新如下:
$("#festus").val(someEncodedString)
...文本框中顯示了嵌入someEncodedString不是轉換的實際代碼這些代碼轉換爲適當的字符。我對這種行爲感到驚訝,因爲我認爲瀏覽器對所有DOM元素執行正確的轉義代碼解釋。
我寫的輔助/包裝的VAL()試圖抽象掉這個問題稱爲VAL2():
$.prototype.val2=function(newVal){
return (newVal===undefined)
?iHub.Utils.encodeHTML(this.val()) //getting value
:this.val(iHub.Utils.decodeHTML(newVal)); //setting value
}
[iHub.Utils是我寫的輔助函數庫]
這裏的想法是,值2()將相應地進行編碼時越來越值從我的文本框檢索到的數據,在此之前設置值解碼。這似乎工作,但我不能動搖的感覺,我必須有一個根本的錯誤理解如何編碼/解碼應該在HTML5中工作。
在使用文本框時編碼/解碼數據是標準做法嗎?文本框在某種程度上是特別的,只要它們不像其他常見元素(如<p>
和<select>
)在顯示編碼輸入字符串時不執行標準解碼?
再一次,對不起,如果這太基本了。對我而言,HTML5和JavaScript是相當新的,我的「HTML5入門」類型的書籍並沒有深入討論這個話題。
您的文本框的值將顯示您告訴它的任何原始文本。例如,如果你想要在'div'中解釋你的HTML,你可以使用'$(「#target_id」)。html(「粗體文本」);'。標準的文本框並不真正把HTML放在裏面,所以我不清楚你想要實現什麼。 – Marc 2012-04-21 18:40:29
結帳this [fiddle](http://jsfiddle.net/MTWDU/)...這是你想要做的嗎? – 2012-04-21 18:45:35
文本框顯示原始文本。他們不顯示呈現的HTML。這與Ajax,Json或其他任何東西無關。瀏覽器只顯示你放入的任何文本。這是一個標準的瀏覽器的東西。目前還不清楚你到底想要什麼。你能給出一個數據的例子,你想如何顯示? – 2012-04-21 19:02:08