如何设置电子UserAgent

zch*_*kng 12 javascript multi-touch touch chromium electron

我需要在电子中设置UserAgent以包含touch标志,因为我正在编写触摸屏应用程序,它似乎不会自动检测到它在触摸屏上运行.

任何帮助都会很好,我已经尝试在BrowserWindow.loadURL选项参数中设置它.

Eri*_*ruz 18

只需在加载URL时使用选项对象即可.

function createWindow () {
   win = new BrowserWindow({width: 800, height: 600});
   win.loadURL('http://www.whoishostingthis.com/tools/user-agent/',
     {userAgent: 'Chrome'});

   win.on('closed', () => {
     win = null
   });
}
Run Code Online (Sandbox Code Playgroud)

  • 供将来参考:如果要扩展用户代理而不是覆盖它,可以通过`win.webContents.getUserAgent()`获取原始用户代理. (4认同)

Vad*_*gon 16

您可以使用onBeforeSendHeaders在主进程中设置User-Agent标头:

import { session } from 'electron';

session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => {
  details.requestHeaders['User-Agent'] = 'SuperDuperAgent';
  callback({ cancel: false, requestHeaders: details.requestHeaders });
});
Run Code Online (Sandbox Code Playgroud)

  • 确保您的版本> = 0.36.1。否则它将无法正常工作。只是花了太长时间才弄清楚这一点。 (2认同)
  • 另请注意,在应用程序“ready”事件触发之前,您无法访问“session”! (2认同)

sin*_*dam 6

加载文件之前,可以调用BrowserWindowInstance .webContents.setUserAgent()

mainWindow.webContents.setUserAgent(mainWindow.webContents.getUserAgent() + " Custom Value");
mainWindow.loadFile('renderer/index.html');
Run Code Online (Sandbox Code Playgroud)

使用电子版3.0.4以前的解决方案对我不起作用。