ie8下文本节点与属性节点不能增加自定义属性

之前与 @张海峰 一起实现了一个HTML模板功能,不使用innerhtml,只替换对应的模板字符串。

实现原理是为遍历筛选出包含模板字符串的文本节点与属性节点,将原始模板保存在当前节点的一个自定义属性(例如_template)中。此后进行替换时,取当前节点的_template属性值进行计算。

在高版本浏览器中,运行很好,但在ie7/8下就坑了。ie7/8并不支持为text node与attribute node增加自定义属性,只支持element node增加自定义属性。

于是单独对ie7/8进行处理。

  1. 当包含模板字符串的node为text时,document.createComment()创建一个注释节点保存模板内容, insertBefore当前textNode。
  2. 当node为attribute时,为当前的element增加一个自定义属性(例如data-tpl-attrName),属性值为当前attributeNode的值。