Electron应用嵌入微信扫码登录的时候,内部的微信iframe会跳转链接,导致不能正常使用微信扫码登录功能;
解决方法:
在主进程中捕获微信跳转请求,拿到链接信息,禁止扫码后跳转:
/*主进程窗体中引用*/
import { ipcMain,session} from "electron";
export default function (win, webRequest=session.defaultSession.webRequest) {
// win 当前窗体
webRequest.onBeforeSendHeaders({
urls: ["*:微信跳转域名在控制台查看"], // 拦截url规则设置,
},
(details, next) => {
console.log("捕获url规则内的请求", details.url);
if (details.url.indexOf("//微信登录跳转链接") != -1) {
// 发送信息到渲染进程
win.webContents.send("main-process-webRequest", details.url);
}
// 执行next将放开拦截
// next({ cancel: false, requestHeaders: details.requestHeaders});
}
})
/*渲染进程使用*/
import { ipcRenderer } from "electron";
const catchWebRequest = function (callback) {
try {
ipcRenderer.on("main-process-webRequest", (event, arg) => {
callback(arg);
});
} catch (e) {
console.log("不支持ipcRenderer");
}
};
// 检测到微信跳转链接会自动调用
catchWebRequest(async (url) => {
// 这时候我们就拿到微信链接跳转的参数了;二维码框也不跳转了 ;可以执行其他业务逻辑了
})