chrome&safari会将内容作为字符串插入

JQuery insertAfter in chrome & safari causes the content to be inserted as String

本文关键字:字符串 插入 amp safari chrome      更新时间:2023-09-26

我使用jQuery将行动态插入表中。行本身是一个(文本)模板,它将替换内部的一些内容,然后"casted"到jQueryDOM节点。虽然这在Firefox和IE中运行良好:

jQuery(jQuery.parseHTML(node)).insertAfter("#imgTable tr:last()");

Chrome和Safari不会插入节点,而是将HTML作为字符串插入。通过这种方式,我不会获得一行,bug一个坚实的html源代码块。。。这是一场用户体验灾难:)

非常简单的复制:http://jsfiddle.net/288sp1qb/4/


我已经发现错误的来源是我将模板存储在<noscript>标记中。我必须这样做,因为我所知道的所有其他标签都会被解释,所以大多数浏览器要么删除<tr><td>标签,要么修改内容。

将模板存储在变量中也不是一个选项,因为模板已经包含一些后端生成的数据。因此,实际的问题是:如何让webkit浏览器在插入数据后对其进行解释?或者:否则我应该如何存储模板?

HTML代码-

<table id="table">
    <tr>
        <th>bsp.</th>
    </tr>
</table>
<noscript id="tpl" style="display:none">
     <tr><td>%VAR%</td></tr>
</noscript>

jQuery代码-

var node = $("#tpl").text();
node = node.replace("%VAR%","test");
$($.parseHTML(node)).insertAfter("#table tr:last()");

JSFiddle-http://jsfiddle.net/Ashish_developer/s35ppva8/

此解决方案在所有浏览器中都运行良好。