我已经创建了这段代码来打印iFrame中的数据。
function (data) {
var frame = $("<iframe>", {
name: "iFrame",
class: "printFrame"
});
frame.appendTo("body");
var head = $("<head></head>");
_.each($("head link[rel=stylesheet]"), function (link) {
var csslink = $("<link/>", { rel: "stylesheet", href: $(link).prop("href") })
head.append(csslink);
;});
frame.contents().find("head")
.replaceWith(head);
frame.contents().find("body")
.append(this.html());
window.frames["iFrame"].focus();
window.frames["iFrame"].print();
}
这将创建一个iFrame,添加一个头部,在头部中设置所有需要的css链接来生成此网站。 然后它创建了主体。
问题是,样式不会应用于打印页面,除非我在frame.contents().find("head").replaceWith(head)这一行断开,这意味着该部分中有某些内容是异步运行的。
问题是,我是否可以在运行该行之前让代码等待一段时间,或者是否有其他方法可以完成此操作? 不幸的是,我对iFrames并不是很熟悉,因此不知道它尝试做什么。