討論(Discussion)
這些都是在論壇討論中提出的問題。
HTML編碼
在目前的提案中,數(shù)據(jù)項(xiàng)默認(rèn)是不被編碼的。這意味著,除非你采取額外的行為,用模板顯示用戶提交的數(shù)據(jù)的文檔將為跨站點(diǎn)腳本(XSS)攻擊大開門戶。在早期的提案中,我們討論為HTML編碼內(nèi)容創(chuàng)建一個諸如{!productName }特別分隔符。在目前的提案中,我們建議使用text()模板函數(shù),而不是用{%= text(productName) %} 。
腳本與樣式模板容器
在目前的提案中,我們建議在<script id="template" type="text/html"></script>元素中包裹模板。有人提議,較好的選擇是用<style id="template" type="text/html"></style>元素,因?yàn)闃邮礁玫捏w現(xiàn)了模板表象的性質(zhì)。
樣式元素的缺點(diǎn)在于不允許出現(xiàn)在文檔的body中,如果你不能修改head元素的內(nèi)容--例如,你正在使用內(nèi)容管理系統(tǒng)(CMS)工作,你就無法創(chuàng)建模板。
從技術(shù)上講,當(dāng)前的提案與用SCRIPT或STYLE包裹模板是兼容的。如果你愿意,你可以使用Style元素并替換type屬性。
模板應(yīng)是真正的DOM元素
只有幾個人建議模板應(yīng)代表真正的DOM元素,這也與ASP . NET Ajax 庫創(chuàng)建模板的方法相似。換句話說,給模板使用標(biāo)準(zhǔn)的DOM元素,用display:none隱藏模板。
使用真正的DOM元素模板的主要缺點(diǎn)在于使用真正的DOM元素會導(dǎo)致不良副作用。例如,考慮下面的代碼:
<div id="template" style="display:none"> <img src="{%= imageUrl %}" /> <br /> {% imageTitle %} </div>
在這種情況下,瀏覽器會嘗試加載位于{%= imageUrl } 地址的圖片,這并不是你向發(fā)生的。像這樣的例子有很多,一個表達(dá)式會導(dǎo)致意想不到的副作用或無效的 HTML。例如,如果是在form中,模板中的input可能post一個實(shí)際的值。另一個很好的例子是在<div id="{ = foo %}"/>其中的id屬性包含無效的值。
出處:
責(zé)任編輯:moby
上一頁 jQuery模板提案 [9] 下一頁 jQuery模板提案 [11]
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|