首页 > 解决方案 > 如何多次调用电子浏览器窗口?

问题描述

我有一个电子浏览器程序,它允许用户使用不同的代理打开多个浏览器窗口。我想知道如何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();```

标签: javascriptelectron

解决方案


为 做一个局部变量声明win2

var win2 = new BrowserWindow(){

否则,win2将被下一次调用覆盖,newWindow()只有最后一个可用。(没有var本地声明,您的变量将是全局的)


推荐阅读