You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击打印时仅在打印输出显示Label日期时间,不在网页前端展示

问题原因

你当前的代码直接修改了当前网页中lblDateTime元素的display属性为block,修改后页面上的这个元素就会显示出来,你并没有在取完打印内容后将这个元素恢复为隐藏状态,因此会出现日期同时展示在网页上的问题。


解决方案1:快速修复现有代码

在获取完打印内容后,立刻将原页面的日期标签恢复为隐藏状态,页面不会出现肉眼可见的闪烁,修改后的JS代码如下:

function PrintDiv() {
    const dateLabel = document.getElementById('<%=lblDateTime.ClientID %>');
    dateLabel.style.display = "block";
    dateLabel.innerHTML = new Date().toLocaleString();
    var contents = document.getElementById("dvContents").innerHTML;
    // 新增:获取内容后立即恢复原元素的隐藏状态
    dateLabel.style.display = "none";
    dateLabel.innerHTML = "";
    
    // 原有逻辑保持不变
    var frame1 = document.createElement('iframe');
    frame1.name = "frame1";
    frame1.style.position = "absolute";
    frame1.style.top = "-1000000px";
    document.body.appendChild(frame1);
    var frameDoc = (frame1.contentWindow) ? frame1.contentWindow : (frame1.contentDocument.document) ? frame1.contentDocument.document : frame1.contentDocument;
    frameDoc.document.open();
    frameDoc.document.write('<html><head><title>DIV Contents</title>');
    frameDoc.document.write('</head><body>');
    frameDoc.document.write(contents);
    frameDoc.document.write('</body></html>');
    frameDoc.document.close();
    setTimeout(function () {
        window.frames["frame1"].focus();
        window.frames["frame1"].print();
        document.body.removeChild(frame1);
    }, 500);
   
    return false;
}

解决方案2:更稳妥的实现(不修改原页面元素)

直接在写入iframe的打印内容中插入日期,不需要操作原页面的任何元素,完全不会影响原页面的展示状态,甚至可以删掉原页面中隐藏的lblDateTime标签:

function PrintDiv() {
    // 直接获取原内容,无需修改原页面元素
    var contents = document.getElementById("dvContents").innerHTML;
    
    var frame1 = document.createElement('iframe');
    frame1.name = "frame1";
    frame1.style.position = "absolute";
    frame1.style.top = "-1000000px";
    document.body.appendChild(frame1);
    var frameDoc = (frame1.contentWindow) ? frame1.contentWindow : (frame1.contentDocument.document) ? frame1.contentDocument.document : frame1.contentDocument;
    frameDoc.document.open();
    frameDoc.document.write('<html><head><title>DIV Contents</title>');
    frameDoc.document.write('</head><body>');
    frameDoc.document.write(contents);
    // 直接在打印内容中插入对应样式的日期
    frameDoc.document.write(`<div style="margin-top: 60px;margin-left: 25%;">${new Date().toLocaleString()}</div>`);
    frameDoc.document.write('</body></html>');
    frameDoc.document.close();
    setTimeout(function () {
        window.frames["frame1"].focus();
        window.frames["frame1"].print();
        document.body.removeChild(frame1);
    }, 500);
   
    return false;
}

内容的提问来源于stack exchange,提问作者rimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:09:03