【发布时间】:2023-04-08 00:33:01
【问题描述】:
我有以下函数从服务器获取 HTML 模板并替换一些标签
$.ajax({
url: "/newsletter/preview/1",
data: {},
success: function(data) {
var template = data;
var layer = $("<iframe>").attr({ "id": "preview_frame" });
$("#newsletter .element input, #newsletter .element textarea").each(function() {
var id = "\\$\\$"+$(this).parent().parent().attr("id").replace(/^newsletter_/, "")+"\\$\\$";
template = template.replace(new RegExp(id, "g"), htmlspecialchars($(this).val(),2));
});
$("body").prepend(layer);
},
dataType: "html"
});
获取模板工作正常。还用表单内容替换标签(当将alert(escape(template)); 放在each 循环内时,我看到所有标签都被替换了)。但是还有两个未解决的问题:
我没有找到将变量
template的内容设置到 iframe 中的方法 ($("#preview_frame").contents().find("body").html(template);只会产生一个空框架)将 iframe(变量
layer)添加到 HTML 正文中 在遍历表单字段期间,但必须在(!)之后完成 所有标签都已被替换,因此只有完整处理的模板将放置在 iframe 中。
【问题讨论】:
-
你无法通过这种方式设置 iframe 内容。
-
我已经这么认为了。但有什么解决办法呢?它不一定是 iframe。但是 HTML 包含完整的 CSS 等等,所以我认为 iframe 是查看 HTML 的最佳方式,并且与主页上的 CSS 没有冲突。
标签: jquery html dom iframe dom-manipulation