取消或保存打印对话框后,当前窗口未关闭

时间:2018-04-10 06:12:19

标签: javascript jquery ajax laravel-5.4

当我打印数据然后它用HTML页面的所有相应数据打开新窗口并且在少量时间打开打印对话框但是当我取消该对话框或当时关闭对话框时当前窗口不关闭。 / p>

请在关闭打印对话框后建议如何关闭对话框的窗口。

以下是我打印数据的代码:



$.ajax({
    url: "project/printProjectData?" + this.searchdata,
    cache: false,
    dataType: 'html',
    contentType: 'application\'html',
    success: function(html){
        var w = window.open('');
        w.document.open();
        w.document.write('<html><head>');
        w.document.write('</head><body onload="window.print()">');
        w.document.write(html);
        w.document.write('</body></html>');
        w.document.close();
        CheckWindowState();
    }
});

function CheckWindowState() {
    if(document.readyState === "complete") {
        window.close();
    } else {
        setTimeout("CheckWindowState()", 2000)
    }
}
&#13;
&#13;
&#13;

但仍未关闭新打开的窗口。

3 个答案:

答案 0 :(得分:0)

//只需将w对象传递给您的函数,以便它可以使用该对象关闭该窗口

$.ajax({
    url: "project/printProjectData?" + this.searchdata,
    cache: false,
    dataType: 'html',
    contentType: 'application\'html',
    success: function(html){
        var w = window.open('');
        w.document.open();
        w.document.write('<html><head>');
        w.document.write('</head><body>');
        w.document.write(html);
        w.document.write('</body></html>');
        w.print();
        CheckWindowState(w);
    }
});

function CheckWindowState(window) {
    if(document.readyState === "complete") {
        window.close();
    } else {
        setTimeout("CheckWindowState()", 2000)
    }
}

答案 1 :(得分:0)

你可以使用setTimeout,如果你想等待n秒然后关闭

var delayInMilliseconds = 1000; //1 second

setTimeout(function() {
  //your code to be executed after 1 second
}, delayInMilliseconds);

答案 2 :(得分:0)

我找到了打印或取消后关闭加载窗口的方法。

由于我在onload事件之后打印数据,我们必须在同一个onload事件上关闭窗口。

&#13;
&#13;
printProjectData: function () {
    $.ajax({
        url: "project/printProjectData?" + this.searchdata,
        cache: false,
        dataType: 'html',
        contentType: 'application\'html',
        success: function(html){
            var w = window.open();
            w.document.write('<html><head>');
            w.document.write('</head><body onload="window.print(); window.close();">');
            w.document.write(html);
            w.document.write('</body></html>');
            w.document.close();
        }
    });
},
&#13;
&#13;
&#13;

谢谢大家。:)