打开外部页面而不打开它

时间:2014-01-21 13:48:11

标签: javascript php browser printing

我希望在所有主流浏览器上打开页面而不打开它。 (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。

我希望所有浏览器都提到这样的东西,但我不知道如何。

还有其他办法吗?

2 个答案:

答案 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>