【发布时间】:2016-06-10 21:37:58
【问题描述】:
我需要在电子中设置 UserAgent 以包含 touch 标志,因为我正在编写触摸屏应用程序,它似乎没有自动检测到它正在触摸屏上运行。
任何帮助都会很好,我已经尝试在 BrowserWindow.loadURL 选项参数中设置它。
【问题讨论】:
标签: javascript touch chromium multi-touch electron
我需要在电子中设置 UserAgent 以包含 touch 标志,因为我正在编写触摸屏应用程序,它似乎没有自动检测到它正在触摸屏上运行。
任何帮助都会很好,我已经尝试在 BrowserWindow.loadURL 选项参数中设置它。
【问题讨论】:
标签: javascript touch chromium multi-touch electron
您可以在主进程中使用onBeforeSendHeaders设置User-Agent标头:
import { session } from 'electron';
session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => {
details.requestHeaders['User-Agent'] = 'SuperDuperAgent';
callback({ cancel: false, requestHeaders: details.requestHeaders });
});
【讨论】:
ready 事件触发之前,您无法访问session!
在加载 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
});
}
【讨论】:
win.webContents.getUserAgent()获取原始用户代理。
在加载文件之前,你可以调用BrowserWindowInstance.webContents.setUserAgent()
mainWindow.webContents.setUserAgent(mainWindow.webContents.getUserAgent() + " Custom Value");
mainWindow.loadFile('renderer/index.html');
适用于 electron 3.0.4 以前的解决方案不适合我。
在较新的版本中,setUserAgent 方法将被弃用。 相反,使用它;
mainWindow.webContents.userAgent //to get
mainWindow.webContents.userAgent = "Something" //to set
【讨论】:
如果你使用<webview>标签就用这个,这对我来说效果更好
<webview src="https://www.github.com/" useragent="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko"></webview>
【讨论】: