讨论(Discussion)
这些都是在论坛讨论中提出的问题。
HTML编码
在目前的提案中,数据项默认是不被编码的。这意味着,除非你采取额外的行为,用模板显示用户提交的数据的文档将为跨站点脚本(XSS)攻击大开门户。在早期的提案中,我们讨论为HTML编码内容创建一个诸如{!productName }特别分隔符。在目前的提案中,我们建议使用text()模板函数,而不是用{%= text(productName) %} 。
脚本与样式模板容器
在目前的提案中,我们建议在<script id="template" type="text/html"></script>元素中包裹模板。有人提议,较好的选择是用<style id="template" type="text/html"></style>元素,因为样式更好的体现了模板表象的性质。
样式元素的缺点在于不允许出现在文档的body中,如果你不能修改head元素的内容--例如,你正在使用内容管理系统(CMS)工作,你就无法创建模板。
从技术上讲,当前的提案与用SCRIPT或STYLE包裹模板是兼容的。如果你愿意,你可以使用Style元素并替换type属性。
模板应是真正的DOM元素
只有几个人建议模板应代表真正的DOM元素,这也与ASP . NET Ajax 库创建模板的方法相似。换句话说,给模板使用标准的DOM元素,用display:none隐藏模板。
使用真正的DOM元素模板的主要缺点在于使用真正的DOM元素会导致不良副作用。例如,考虑下面的代码:
<div id="template" style="display:none"> <img src="{%= imageUrl %}" /> <br /> {% imageTitle %} </div>
在这种情况下,浏览器会尝试加载位于{%= imageUrl } 地址的图片,这并不是你向发生的。像这样的例子有很多,一个表达式会导致意想不到的副作用或无效的 HTML。例如,如果是在form中,模板中的input可能post一个实际的值。另一个很好的例子是在<div id="{ = foo %}"/>其中的id属性包含无效的值。
出处:Denis'Blog
责任编辑:moby
上一页 jQuery模板提案 [9] 下一页 jQuery模板提案 [11]
◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
|