javascript - 如何使 Resig 的微模板与 XHTML 兼容?

标签 javascript templates xhtml

我一直在试验 John Resig's micro-template ,效果很好。但是,标记不会通过 XHTML 1.0 Transitional 验证测试。 (除其他事项外,id 属性会产生错误。)

用 [[,]] 替换标签标识符 <, > 通过验证。因此,我创建了一个 js 脚本,它在加载时(准备好 jQuery 文档)将方括号转换回常规标记。这在 FF 中工作正常,但在 IE、Chrome 等中无效。

嵌入在 CDATA 标签中的脚本也会进行验证。

问题:有没有办法在脚本中插入微模板并仍然通过 XHTML 验证?我的想法是在页面加载后删除 CDATA 标签。但可能有更聪明的方法。 (注意:我不希望通过 js 注入(inject) HTML,因为标记很难维护。)

PS:我查看了其他 js 模板,但它们要么不兼容 XHTML,要么过于庞大。

任何提示的 TIA。

最佳答案

为什么你要费心去改变所有使用微模板的方法,而不是改变微模板本身?以某种方式加载所有内容,然后更改所有内容以使其与脚本兼容,这似乎是浪费处理。

为什么不修改原来的脚本来使用[[标签而不是 <%最初提供的标签?

这是它识别模板的方式

str
          .replace(/[\r\t\n]/g, " ")
          .split("<%").join("\t")
          .replace(/((^|%>)[^\t]*)'/g, "$1\r")
          .replace(/\t=(.*?)%>/g, "',$1,'")
          .split("\t").join("');")
          .split("%>").join("p.push('")
          .split("\r").join("\\'")
      + "');}return p.join('');");

现在更改 <%[[>%]]

str
          .replace(/[\r\t\n]/g, " ")
          .split("[[").join("\t")
          .replace(/((^|]])[^\t]*)'/g, "$1\r")
          .replace(/\t=(.*?)]]/g, "',$1,'")
          .split("\t").join("');")
          .split("]]").join("p.push('")
          .split("\r").join("\\'")
      + "');}return p.join('');"); 

关于javascript - 如何使 Resig 的微模板与 XHTML 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1044422/

相关文章:

javascript - knockout 点击处理程序不适用于使用 ko.computed 创建的表

javascript - UI-Router嵌套状态 View 未渲染(渲染父 View )

javascript - 如何在 javascript/html 中制作 Canvas API 彩色图 block

.net - 成熟且健壮的.NET类,允许/禁止XHTML标记/属性

javascript - 如何在 Highcharts 散点图中的工具提示中隐藏系列名称以进行线性回归

c++ - Visual Studio 2010 的模板问题

c++ - 模板参数中的 const

c++ - 关于在 C++ 模板化队列中实现 put() 函数的建议?

java - 如何在从数据库检索的页面中显示阿拉伯语 unicode 文本

javascript - 读取 cookie 过期日期