javascript - 如何多次调用电子浏览器窗口?
问题描述
我有一个电子浏览器程序,它允许用户使用不同的代理打开多个浏览器窗口。我想知道如何newWindow()
多次调用函数。在我当前的代码中,它打开了所有窗口,但只有一个加载页面,如图所示
这是我的代码:
const url = require('url');
const async = require('async')
let win = null
function boot() {
console.log(process.type)
win = new BrowserWindow({
width: 500,
height: 500,
resizable: false,
frame: false
})
win.loadURL(`file://${__dirname}/index.html`)
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function newWindow() {
var proxyList = '196.19.218.117:9044:dailyf:proxies'
var siteUrl = 'https://twitter.com/home'
win2 = new BrowserWindow({
width: 750,
height: 500,
resizable: false,
parent: win,
})
win2.webContents.session.setProxy({proxyRules:`http=foopy,direct://${proxyList}`}, function () {
win2.loadURL(`${siteUrl}`);
},
win2.on('closed', () => {
win = null
}),
)}
app.on('ready', boot)
function spawnChildren() {
app.on('ready', _ => {
console.log('yessirski')
newWindow();
sleep(4000)
newWindow();
sleep(4000)
newWindow();
})
}
spawnChildren();```
解决方案
为 做一个局部变量声明win2
:
var win2 = new BrowserWindow(){
否则,win2
将被下一次调用覆盖,newWindow()
只有最后一个可用。(没有var
本地声明,您的变量将是全局的)
推荐阅读
- r - R中的特定排列
- python - 跳转到python中的特定迭代“for循环”
- c# - 将 ListBox 中 DataTemplateItem 内的属性绑定到 MainPage 中的外部对象
- spotfire - 子组 Spotfire 的计算值百分比
- azure - 使用 Azure Log Analytics(以前称为 OMS)从 blob 查询 IIS 日志
- airflow - 气流:只允许一个任务实例
- spring-boot - 带有 vaadin13 和 wildfly NoClassDefFoundError 的 Spring-boot
- redhat - 如何在redhat ubi8/ubi-minimal中安装ps
- reactjs - Material-UI 如何将自定义 Snackbar 的 TransitionComponent 更改为 Slide
- pycharm - 在两个不同的环境中使用 PyCharm 项目