用javascript打开一个带打印对话框的新窗口?

时间:2016-03-18 07:38:08

标签: javascript

我想在javascript中打开一个新标签,打印窗口已经打开。我已经尝试了以下代码,但它无法正常工作

function OpenInNewTab() {
        var win = window.open('http://stackoverflow.com/questions/6808650/triggering-ctrl-s-or-ctrl-p-via-a-button', '_blank');
        console.log(win);
        win.focus();
        win.onload = function() {
            win.print();
        };
    }

我怎样才能实现同样的目标

编辑1:

我也尝试了这样但是没有工作

function OpenInNewTab() {
        var win = window.open('http://stackoverflow.com/questions/6808650/triggering-ctrl-s-or-ctrl-p-via-a-button', '_blank');
        win.document.attachEvent("load", function() {
            window.print();
            alert("called")
        })

    } 

2 个答案:

答案 0 :(得分:1)

我发现问题为什么chrome无法正常工作。请参考以下代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" id="age_validation_input"> <button type="button" id="age_validation_btn" onclick="OpenInNewTab()"> Test </button>

<script type="text/javascript">
function OpenInNewTab() {
        var win = window.open('https://stackoverflow.com/questions/6808650/triggering-ctrl-s-or-ctrl-p-via-a-button', '_blank','height=600,width=800');
        console.log(win);
        win.focus();
        //win.onload = function() {
        //  alert("Hello");
        //    print();
        //};
        //win.onload = "alert('hello');"

        setTimeout(function(){win.print();win.close();}, 3000);
    }

</script>

当您运行上面的代码时,它会显示以下错误:

enter image description here

因此,要解决此问题,请参阅How do I get around window.opener cross-domain security

希望这会有所帮助:)

答案 1 :(得分:0)

所以基本上你想做什么,或者更确切地说,你可以做的是制作你想要打印的页面。在新标签页中打开该页面。然后在要打印的页面正文的底部,添加:

 <script>         
   var yourName= "whateverYouWannaNameTheDocument";
            document.title = yourName;
            window.print();
</script>

这对我来说在生成发票时很有用。