首页 > 解决方案 > 我有一个电子应用程序,但打印按钮不起作用

问题描述

我有一个为我的网站编写的电子应用程序,它只是打开了网站。我的网站使用 jQuery 数据表,我有一个按钮,我单击它会打开一个新选项卡,其中包含 pdf 格式的表并打印出来。当我尝试使用电子上的按钮时,它会打开一个新的白色窗口,但什么也没有显示,但它可以在我的网站上使用。我是电子新手,很抱歉,如果这是一个超级简单的修复,但我似乎无法在网上找到任何东西,也许我搜索不正确。有什么办法可以让电子应用程序与我的打印按钮一起工作。我使用的打印方法是一个内置的 jQuery 函数。我的电子密码:

const { app, BrowserWindow } = require('electron')

function createWindow () {
  let win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: false
    }
  })
  win.loadURL('mywebsiteurl')
  win.webContents.openDevTools()
}

app.on('ready', createWindow)

还有我的数据表打印代码

table = $('#studentstable').DataTable({
                    "aaData": data,
                    "dom": 'Bfrtip',
                    "buttons": ['print'],
                    "aoColumns": [
                    { "mData": "studentid"}, 
                    { "mData": "name"},
                    { "mData": "phone"},
                    { "mData": "grade"},
                    { "mData": "category"},
                    { "mData": "totalHours"},
                    { "mData": "studentid",
                        "render": function(data, type, row, meta) {
                                if(type === 'display') {
                                //data = '<a href="#" onclick="getStudentInfo('+ data + ')">Edit</a>' +
                                data = '<a href="#" onclick="addStudentActivity('+ data + ')">Add Hours</a>' +
                                '&nbsp; <a href="#" onclick="deleteStudent(' + data + ')">Delete</a>' +
                                '&nbsp; <a href="#" onclick="getStudentReport(' + data + ')">Report</a>';
                                }
                                return data;
                         }
                     }],
                     "paging":true,
                     "pageLength":20,
                     "ordering":true
               });

如果您希望我添加任何其他内容,请告诉我,我可以发送谢谢!

标签: javascriptjqueryelectron

解决方案


只需激活 nativeWindowOpen 状态就足够了

const { app, BrowserWindow } = require('electron')
    function createWindow () {
      let win = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
           nodeIntegration: true,
           nativeWindowOpen: true, //**** add this**
        }
      })
      win.loadURL('yoursite')
      win.webContents.openDevTools()
    }
    
    app.on('ready', createWindow)

推荐阅读