我一直在试验John Resig的微模板,它很有效.但是,标记不会通过XHTML 1.0 Transitional验证测试.(除其他外,id属性会产生错误.)
用[[,]]替换标签标识符<,>,通过验证.因此,我创建了一个js脚本,在加载时(jQuery文档就绪)将方括号转换回常规标记.这适用于FF,但不适用于IE,Chrome等.
嵌入在CDATA标签中的脚本也会验证.
问题:有没有办法在脚本中插入微模板并仍然通过XHTML验证?我的想法是在页面加载后删除CDATA标签.但可能有更聪明的方法.(注意:我不想通过js注入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('');");
Run Code Online (Sandbox Code Playgroud)
现在改变<%to [[和>%to]]
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('');");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1008 次 |
| 最近记录: |