簡體   English   中英

Javascript覆蓋屏幕上的數據並刷新頁面

[英]Javascript overwrites data on screen and refreshes page

我一直在從事一個項目,我只需要打印隱藏的div的內容。 下面的解決方案工作正常,但是將頁面內容替換為div然后調用窗口的打印,然后將頁面替換為原始內容。 很好,但是當我在此之后單擊頁面或嘗試再次打印時,頁面將刷新。

有沒有一種方法,而無需打開新窗口來打印div的內容並且頁面仍然有效?

$scope.printDiv = function(printable) {
    var restorePage = document.body.innerHTML;
        var printContent = document.getElementById(printable).innerHTML;
        document.body.innerHTML = "<html><head><title></title></head><body>" +  printContent  + "</body>";
        window.print();
        document.body.innerHTML = restorePage;
    };

我創建了一個指令,該指令執行的操作與此類似。 它涉及到創建一個新窗口,用您要打印的HTML填充它,打印該窗口,然后最后關閉。

該代碼如下所示:

$scope.printPage = function() {
    var pageToPrint = $window.open('', 'Print Page', 'width=800, height=600');
    pageToPrint.document.write(angular.element(pageHtml).html());
    pageToPrint.document.close();
    pageToPrint.focus();
    pageToPrint.print();
    pageToPrint.close();
}

這適用於所有瀏覽器,並在用戶完成打印對話框窗口后徹底關閉所有內容。

看到我發現的類似問題: AJAX-打印頁面內容

Matt Razza答案似乎是您想要的。

如果您嘗試打印不可見的內容,則可以將兩個不同的css文件用於不同的媒體(屏幕和打印),在其中通過顯示隱藏/取消隱藏所需的內容: 然后通過window.print()生成打印對話框。

 <link rel="stylesheet" type="text/css" href="theme1.css" media="screen" /> <link rel="stylesheet" type="text/css" href="theme2.css" media="print" /> <div class="hidden_on_page">YOU CAN'T SEE ME BUT YOU CAN PRINT ME!</div> <div class="on_page">YOU CAN SEE ME BUT YOU CAN'T PRINT ME</div> 

然后在theme1.css中:

 .hidden_on_page { display: none; } 

主題2.css:

 .on_page { display: none; } 

然后您可以通過以下方式觸發“打印”對話框生成:

 window.print(); 

您可以使用CSS來做到這一點: https//stackoverflow.com/a/356123/1516112

當用戶單擊您的按鈕時,使用.no-print類將整個頁面包裝在div 接下來,將內容添加到上一個div旁邊的另一個div 調用print()並恢復您的頁面。 它應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM