我的网站有一个“打印此页面”按钮。
我将静态打印模板HTML文件加载到隐藏的iframe中,使用jQuery将HTML复制到该页面,然后从Iframe页面调用window.print()
。一切都很好,除了想要打印父框架的Safari,所以我打开了两个打印对话框。
我尝试在iframe中调用window.print,并从父级调用它,目标是iframe(document.printFrame.window.print()
),但我得到两个对话框。
有没有人知道解决这个问题的方法?我只想打印iframe,而不是父。
答案 0 :(得分:1)
我无法重现这个错误;它适用于我(即:我只得到一个打印对话框),无论我是从iframe还是父框架调用它。也许你在某处两次调用window.print()?
我在Mac OS X 10.6上运行Safari 4.0.3
编辑:这是:http://jsfiddle.net/Kq9dc/
编辑2:我刚刚在Safari 5.0 / Windows 7上对此进行了测试,它运行正常。你确定它不是代码中的其他内容吗?
编辑3 :刚在WinXP的几个Safari版本上测试过这个:
Safari 3.0 (first beta): Not working (no print dialog)
Safari 3.1 (first non-beta): Works fine
Safari 4.0: Works fine
Safari 5.0: Works fine
答案 1 :(得分:0)
试试这个。把它放在iframe中:
function printPage() { print(); }
然后在父母:
function printIframe(id)
{
var iframe = document.frames ? document.frames[id] : document.getElementById(id);
var ifWin = iframe.contentWindow || iframe;
iframe.focus();
ifWin.printPage();
return false;
}
如果这也不起作用,我会尝试打开一个新的窗口/标签,并用可打印的HTML填充它。
var printwin = window.open("about:blank", "_new");
printwin.document.open();
printwin.document.write("HTML goes here..javascript which is going to print is in there too..");
printwin.document.close();
需要注意的两件小事是
</script>
,因此您不会过早终止