在Chrome中第二次单击打印按钮时,window.open不起作用

时间:2014-04-23 06:22:37

标签: javascript jquery

我正在尝试打印一个适用于IE和Google Chrome的特定div。这是我写的代码。

function PrintElem(elem) {
        Popup($(elem).html());
    }
function Popup(data) {

        var mywindow = window.open('', 'Product Purchase Summary Page ','height=400,width=600');
        mywindow.document.write('<html><head><title>my div</title>');


        mywindow.document.write('</head><body onload="javascript:window.print();">');
        mywindow.document.write(data);
        mywindow.document.write('</body></html>');
        mywindow.print();


        if (navigator.userAgent.match(/MSIE/) !== null) {
            mywindow.location.reload();
        }          
        return true;
    }

代码在IE中运行良好。在chrome中,第一次单击打印按钮时,它会打开一个打印窗口。关闭打印窗口后,如果我第二次单击打印按钮,window.open不会打开打印窗口。它只适用于第一次。打印按钮第二次不执行任何操作。  但是当我在打印窗口中点击取消按钮(而不是关闭)时,第二次点击按钮就可以了。 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

事实上,我一直面临与Chrome 34完全相同的问题。我今天早上更新到了Chrome 36,问题已解决。

在任何情况下,您可能想尝试这个,它通过在弹出窗口中放置焦点 - 关闭 - 功能来解决我的问题。

<HTML>
  <HEAD><TITLE>PRINT TEST</TITLE></HEAD>
  <BODY>
    <button label="print" onclick="print();">print</button>
  </BODY>

  <script>
  function print() {
    var datawindow = window.open("", "data", "height=400,width=600");
    datawindow.document.write("<html><head><title>data</title>");
    datawindow.document.write("</head><body onload='window.focus();window.print();' onbeforeunload='window.close();' ><pre><code>");
    datawindow.document.write("SOMETHING TO PRINT GOES HERE");
    datawindow.document.write("</code></pre></body></html>");
    datawindow.document.close();
    datawindow.close();
    this.__handlePrintSuccess();
  }
  </script>
</HTML>

请注意onload='window.focus();window.print();'onbeforeunload='window.close();'

答案 1 :(得分:0)

$(document).on("click", "#printBtn", function()
{

    // Code [ Tap.. Tap.. Tap..]

});