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

如何在Edge浏览器中实现打印对话框自动确认打印功能?

解决队列号票据自动打印的问题

首先明确:浏览器出于安全和用户体验限制,不允许JS直接绕过打印确认对话框,但可以通过以下方式实现接近自动打印的效果:

方案1:配置浏览器允许静默打印(针对Edge/Chrome)

  • 打开Edge浏览器,输入edge://settings/content/printing进入打印设置
  • 找到允许网站跳过打印预览并直接打印选项,开启后添加你的站点到允许列表
  • 此时调用window.print()会直接触发打印,不再弹出对话框

方案2:优化现有代码的稳定性

你的当前代码依赖setTimeout等待页面加载,可能因渲染延迟导致打印内容异常,可改用页面加载事件替代:

function printLayout() {
    var _el = $('<div>')
    var _h = $('head').clone()
    var _p = $('#outprint').clone()
    _h.find('title').text("Queue Number - Print")
    _el.append(_h)
    _el.append(_p)
    var nw = window.open('', '_blank', 'width=700,height=500,top=75,left=200')
    nw.document.write(_el.html())
    nw.document.close()
    
    // 监听新窗口加载完成,替代不稳定的setTimeout
    nw.addEventListener('load', function() {
        nw.print();
        // 监听打印完成事件(部分浏览器支持)
        nw.addEventListener('afterprint', function() {
            nw.close();
            $('#uni_modal').modal('hide');
            window.location.href = '/queuing/kiosk/';
        });
    });
}

$(function() {
    printLayout();
})

注意:afterprint事件在不同浏览器中兼容性有差异,若无效可保留短时间setTimeout作为备用方案

方案3:无头浏览器实现完全自动打印(适合无人值守场景)

如果是服务器端或自助 kiosk 设备,可使用Puppeteer(支持Edge无头模式)实现无交互打印:

const puppeteer = require('puppeteer');

async function autoPrintQueue() {
    const browser = await puppeteer.launch({
        executablePath: 'path/to/edge.exe', // 替换为你的Edge可执行文件路径
        headless: 'new',
        args: ['--enable-print-preview']
    });
    const page = await browser.newPage();
    // 直接传入打印内容
    await page.setContent($('#outprint').html());
    // 静默打印,无需对话框
    await page.print({
        silent: true,
        deviceName: '你的目标打印机名称'
    });
    await browser.close();
    window.location.href = '/queuing/kiosk/';
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:35:34