我希望在所有主流浏览器上打开页面而不打开它。 (Safari,IE,Firefox,Chrome和Opera)
我试过但是在firefox上没有用(错误:拒绝访问属性'print'的权限):
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<link rel="alternate" media="print" href="print.php">
<script type="text/javascript">
function impression() {
window.frames[0].focus();
window.frames[0].print();
}
</script>
</head>
<body>
<iframe height="0px" src="print.php" id="fileToPrint" style="visibility: hidden"></iframe>
<a href="javascript:impression()">Imprimer</a>
</body>
</html>
此代码适用于Chrome。
我希望所有浏览器都提到这样的东西,但我不知道如何。
还有其他办法吗?
答案 0 :(得分:1)
创建iframe,隐藏它,然后调用正确的打印功能。 execCommand应该适用于所有版本的IE 请注意:$ .browser不适用于较新版本的jQuery,应该避免使用。使用您首选的检测功能的方法。
var ifr = createIframe();
ifr.hide();
if ($.browser.msie) {
ifr.contentWindow.document.execCommand('print', false, null);
} else {
ifr.contentWindow.focus();
ifr.contentWindow.print();
}
这是为IE,FF和Chrome开发的。我不知道这对Safari和Opera有多好,但它可能会给你一些想法。
编辑:正如adeneo正确指出的那样,$ .browser已被弃用,应该避免使用。我更新了我的陈述。我会保持我的代码不受影响,因为它仍然表达了正确的意图。
答案 1 :(得分:0)
您可以尝试使用此代码,但它是Javascript;
<script language="JavaScript">
var gAutoPrint = true; // Tells whether to automatically call the print function
function printSpecial()
{
if (document.getElementById != null)
{
var html = '<HTML>\n<HEAD>\n';
if (document.getElementsByTagName != null)
{
var headTags = document.getElementsByTagName("head");
if (headTags.length > 0)
html += headTags[0].innerHTML;
}
html += '\n</HE>\n<BODY>\n';
var printReadyElem = document.getElementById("printReady");
if (printReadyElem != null)
{
html += printReadyElem.innerHTML;
}
else
{
alert("Could not find the printReady function");
return;
}
html += '\n</BO>\n</HT>';
var printWin = window.open("","printSpecial");
printWin.document.open();
printWin.document.write(html);
printWin.document.close();
if (gAutoPrint)
printWin.print();
}
else
{
alert("The print ready feature is only available if you are using an browser. Please update your browswer.");
}
}
</script>