【问题标题】:In unobtrusive JavaScript, once you've separated content and scripts, what do you do for a script that adds content?在不显眼的 JavaScript 中,一旦你分离了内容和脚本,你会为添加内容的脚本做什么?
【发布时间】:2011-02-25 19:11:30
【问题描述】:
我正在尝试在我的 Rails 3 应用程序中遵循不显眼的 JavaScript 的最佳实践。我已经将我网站上的大部分 HTML 内容和 JavaScript 分开了。但是,我有一个表单,在单击脚本时,它用于添加额外的 HTML 表单元素。这种情况的最佳做法是什么?
由于它是一个表单,我不能只使用脚本预渲染和隐藏元素,导致它显示,因为隐藏的表单元素仍然被提交。
【问题讨论】:
标签:
javascript
unobtrusive-javascript
【解决方案1】:
您可以通过编程方式创建新内容(通过创建节点等),或者您可以使用模板系统将数据映射到预编码的 HTML 模板中。
当您隐藏表单的某些部分时,您可以找到所有输入并禁用它们(将“禁用”属性设置为true)以防止它们被提交。
要“不引人注目”,如果您使用模板系统,则需要以某种方式组织模板。有些人喜欢将它们编码到页面中,有时将它们作为未经解释的原始文本潜入<script> 标记中,其类型可防止浏览器尝试解释它:
<script type='text/template' id='templateName'>
<div class='part-of-a-template'>
<!-- etc etc -->
</div>
</script>
或者,您可以提供嵌入到 JavaScript 或 JSON 数据中的模板,可能通过响应模板动态请求的服务器端设施。你如何做取决于你的需求。