gpt4 book ai didi

javascript - Electron/Nativefier Web App - 新窗口打印问题 [HTML, JS]

转载 作者:行者123 更新时间:2023-12-03 12:27:56 29 4
gpt4 key购买 nike

我用 Nativefier 构建了一个桌面应用程序女巫基于 Eelectron JS .
我遇到了打印问题,只有在尝试打开带有打印预览的新窗口时才会出现问题。
我有很多表格,每个表格都附有此代码以使它们可打印(略有不同):

    function printData3()
{
var divToPrint=document.getElementById("myTable");
var htmlToPrint = '' +
'<style type="text/css">' +
'table th, table td {' +
'border:1px solid #000;' +
'padding:0.5em;' +
'}' +
'</style>';
htmlToPrint += divToPrint.outerHTML;
newWin = window.open("");
newWin.document.write(htmlToPrint);
newWin.print(htmlToPrint);
newWin.close();
}

$(document.getElementById("print-pred")).on('click',function(){
printData3();
})
这在正常情况下适用于所有浏览器,但在应用程序中失败并出现错误:
Uncaught TypeError: Cannot read property 'write' of undefined
at printData3 (rad.php:1373)
at HTMLButtonElement.<anonymous> (rad.php:1379)
at HTMLButtonElement.dispatch (jquery.min.js:2)
at HTMLButtonElement.v.handle (jquery.min.js:2)
该错误行指的是: newWin.document.write(htmlToPrint);从上面显示的代码。
但是,此代码可以正常工作并立即启动打印对话框:
function myFunction() {
window.print();
女巫让我相信(这是一个猜测,如果我错了,请纠正)问题在于打开一个带有打印预览的新窗口,因为 Web 应用程序本身是无 Chrome 的,并且设计只能在一个窗口中工作。
现在,如前所述,我在不到 100 个实例中实现了此代码,并带有一些变化,因此在所有位置一起更改它对我来说是个大问题。
所以我的问题是上面显示的第一个代码可以以某种方式最小地改变以首先跳转到打印对话框(跳过新窗口预览部分)?所以我可以做简单的搜索/替换所有文件。
编辑:
解决方案作为答案发布。

最佳答案

我对“Nativefier”不是很熟悉,但我想 newWin变量没有像“文档”这样的属性,错误就是这样说。
但是对于 Electron,您可以使用 webContents方法 - executeJavascript :

// Warning: pure Electron, no add-ons or something like Nativefier
const { app, BrowserWindow } = require('electron')
const path = require('path')

app.once('ready', () => {
var mainWindow = new BrowserWindow()
mainWindow.loadURL(path.join(__dirname, 'index.html'))
mainWindow.webContents.executeJavaScript(`
document.getElementById("list").innerHTML += '<h1>Hey Wassup</h1>'
`)
}
})
})

关于javascript - Electron/Nativefier Web App - 新窗口打印问题 [HTML, JS],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60939931/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com