electron伪协议,获取URL相关系列参数总结
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
苏南大叔最近的文章,讲述了一系列伪协议相关的文章,里面多次涉及到了参数这个概念。不过,这些参数却是看起来类似,实际上有很大不同,并且相互之间有影响关系。在本文中,苏南大叔将对electron伪协议相关代码,进行整体总结。
本文测试环境 :electron@5.0.1
/win10
。
设置的参数(win专享)
用于设置的参数,主要是app.setAsDefaultProtocolClient(protocol[, path, args])
中的args
。
args
是个数组,是windows
系统专用的。args
推荐最后压入一个--
,这是个安全选项,为了修补漏洞而设置的。args
的数据,将影响最终执行exe
时的后续参数,进而影响伪协议url
的获取方式。
相关文章:
通用的获取url
的方式(自己获取自己的url)
被伪协议唤起的程序体,如果想要获得传递进来的url
,通用的途径是:
process.argv
但是在window
系统下,受到了setAsDefaultProtocolClient
中的神秘的args
参数影响,通过process.argv
获得url
的方法,也需要具体问题具体分析。当然,这里也许有个通用的获取方式:
urlStr = process.argv[process.argv.length-1];
相关文章:
第二实例的url
获取(首个截获后续的url)
对于启动多个实例的情况,那么处理方式,参照process.argv
。但是,如果不能启动多实例,单一实例的情况,(mac
默认情况下强制单实例)。对于第二实例的处理,可能有不同的方式。要明确的是:这个第二实例的事件代码,是在第一个实例里面触发的。第二个实例运行的时候,动作只有一个:退出。
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) { app.quit() }
首先,确保启用了单实例相关代码(mac
默认就单实例)。其次,获得url
。
mac
生产模式,使用open-url
事件,可直接获得相关url
。win
和centos
以及调试模式的mac
,需要通过second-instance
事件,处理argv
参数获得url
。
app.on('second-instance', (event, argv) => {
console.log(argv[argv.length-1]);
});
app.on('open-url', (event, urlStr) => {
console.log(urlStr);
});
相关文章:
- https://newsn.net/say/electron-second-instance.html
- https://newsn.net/say/electron-second-instance-mac.html
对url
进行匹配
无论通过什么方式,拿到url
之后,就需要通过转换为URL
对象,进行分析处理。下面的是相关范例代码:
const urlObj = new URL(urlStr); // sunan://222?aa=bb&cc=dd
console.log(urlObj.protocol); // sunan:
console.log(urlObj.pathname); // //222
console.log(urlObj.search); // ?aa=bb&cc=dd
const { searchParams } = urlObj;
console.log(searchParams.get('aa')); // bb
相关文章:
总结
electron
伪协议参数处理的情况,基本上都讲清楚了,大家可以自行实验相关代码。更多苏南大叔带来的electron
相关文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。