仅使用网址打印网页而无需打开新窗口?

时间:2011-11-23 10:17:01

标签: javascript html

<html>
<head>
<script type="text/javascript">
    var URL = "http://localhost:8000/foobar/";
    var W = window.open(URL);    **Note1**
    W.window.print(); 

</script>
</head>
<p> Print ME...............</p>
</html>

我正在使用此脚本打印网页。 我的观点呈现了这个页面,而JS则关注所有其他事情。

但我不想为此打开新窗口。那么,我应该使用什么而不是window.open(URL),以便no new window打开。同样,我不想为print function打开新窗口。因此,每当我渲染此页面时,它都会在同一页面上执行所有操作。没有新窗口,没有新标签。我怎样才能做到这一点。我谷歌但似乎没有任何工作。

5 个答案:

答案 0 :(得分:41)

您可以使用隐藏的 iFrame (我使用jquery作为示例)执行此操作:

function loadOtherPage() {

    $("<iframe>")                             // create a new iframe element
        .hide()                               // make it invisible
        .attr("src", "/url/to/page/to/print") // point the iframe to the page you want to print
        .appendTo("body");                    // add iframe to the DOM to cause it to load the page

}

这将加载您要打印的页面。要进行打印,您可以将javascript代码添加到打印页面,以便在加载后打印:

$(document).ready(function () {
    window.print();
});

这将打印页面而不显示新窗口。我已经在IE8,9和谷歌浏览器中对此进行了测试,但我不确定这是否适用于Safari或Firefox。

答案 1 :(得分:7)

在MDN上有一个很好的例子,如何使用隐藏的iframe https://developer.mozilla.org/en-US/docs/Printing#Print_an_external_page_without_opening_it

来做到这一点

答案 2 :(得分:0)

参考@andragon's answer。在它上面更新。

您可以使用iFrame执行此操作(未隐藏,因为隐藏的iFrame在最新版本的浏览器中打印空白页。您可以在触发打印后隐藏)

function loadOtherPage(link) {
        $("<iframe class='printpage'>") // create a new iframe element
            .attr("src", link) // point the iframe to the page link you want to print
            .appendTo("body");
    }

这将加载您要打印的页面链接。 在加载打印页面链接时,您可以调用javascript。

$(document).ready(function () {
        window.print();
    });

    window.onafterprint = function () {
        $('.printpage', window.parent.document).hide();
    }

这将从同一窗口打印页面,并在页面开始打印时触发onafterprint事件,或者打印对话框已关闭

window.parent.document是隐藏父页面上的iFrame块。

答案 3 :(得分:0)

我使用 Asp .net core 和 razor html 作为视图,在这种情况下,我使用 window.print() 打印页面,然后使用 window.onafterprint 返回到要重定向的页面。< /p>

您可以使用 ViewBag 替换“/NewSales”网址。

注意:window.onafterprint 将在用户点击弹出窗口中的取消/提交/打印按钮时调用。

$(document).ready(function () {
    window.print();

    window.onafterprint = function () {
        window.location.href = "/NewSales";
    }
});

答案 4 :(得分:-2)

 function CallPrint() {
        var prtContent = document.getElementById('main');
        var WinPrint = window.open('', '', 'width=800,height=650,scrollbars=1,menuBar=1');
        var str =  prtContent.innerHTML;
        WinPrint.document.write(str);
        WinPrint.document.close();
        WinPrint.focus();
    }

在打印按钮上单击调用此javascript函数。“main”是我们必须打印而不打开新窗口的div的ID。我想通知这将打印当前页面div。 如有任何问题,请尝试并重试。
谢谢,
Gourav