Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript chrome&;中的JQuery insertAfter;safari会将内容作为字符串插入_Javascript_Jquery_Html_Google Chrome_Dom - Fatal编程技术网

Javascript chrome&;中的JQuery insertAfter;safari会将内容作为字符串插入

Javascript chrome&;中的JQuery insertAfter;safari会将内容作为字符串插入,javascript,jquery,html,google-chrome,dom,Javascript,Jquery,Html,Google Chrome,Dom,我使用jQuery将行动态插入表中。行本身是一个(文本)模板,其中的一些内容被替换,然后被“浇铸”到jQueryDOM节点。虽然这在Firefox和IE中运行良好: jQuery(jQuery.parseHTML(node)).insertAfter("#imgTable tr:last()"); Chrome和Safari不会插入节点,而是将HTML作为字符串插入。这样我就不会得到一行代码,而是一个完整的html源代码块…这是一个用户体验灾难:) 非常简单的复制: …我已经发现错误的来源

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

jQuery(jQuery.parseHTML(node)).insertAfter("#imgTable tr:last()");
Chrome和Safari不会插入节点,而是将HTML作为字符串插入。这样我就不会得到一行代码,而是一个完整的html源代码块…这是一个用户体验灾难:)

非常简单的复制:


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

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

HTML代码-

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


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

这里的实际目标是什么?您的解释不清楚,您在小提琴中演示的方法似乎有点异乎寻常。解析到模板中的内容部分是服务器端内容,部分是客户端内容,模板本身是交付的html的一部分,这使得访问变得很容易。@Mr.Manhattan请看一下我在答案部分发布的答案。使用“use.text()而不是.html()”就足够了,不过谢谢,这很好。
var node = $("#tpl").text();
node = node.replace("%VAR%","test");
$($.parseHTML(node)).insertAfter("#table tr:last()");