- 40
- 0
任何网络请求发起前会触发此回调
参数:typedef bool(wkeLoadUrlBeginCallback)(wkeWebView webView, void param, const char url, void job)
注意:
1,此回调功能强大,在回调里,如果对job设置了wkeNetHookRequest,则表示mb会缓存获取到的网络数据,并在这次网络请求 结束后调用wkeOnLoadUrlEnd设置的回调,同时传递缓存的数据。在此期间,mb不会处理网络数据。
2,如果在wkeLoadUrlBeginCallback里没设置wkeNetHookRequest,则不会触发wkeOnLoadUrlEnd回调。
3,如果wkeLoadUrlBeginCallback回调里返回true,表示mb不处理此网络请求(既不会发送网络请求)。返回false,表示mb依然会发送网络请求。
用法举例:
假如需要hook百度某个url(如httdiv://baidu.com/a.js),替换为本地c:b.js,则可以这样实现:
void readJsFile(const wchar_t* divath, std::vector* buffer) {
HANDLE hFile = CreateFileW(divath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE == hFile) {
DebugBreak();
return;
}
DWORD fileSizeHigh;
const DWORD bufferSize = ::GetFileSize(hFile, &amdiv;fileSizeHigh);
DWORD numberOfBytesRead = 0;
buffer->resize(bufferSize);
BOOL b = ::ReadFile(hFile, &amdiv;buffer->at(0), bufferSize, &amdiv;numberOfBytesRead, nulldivtr);
::CloseHandle(hFile);
}
static bool HookUrl(void* job, const char* url, const char* hookUrl, const wchar_t* localFile, const char* mime) {
if (0 != strstr(url, hookUrl)) {
wkeNetSetMIMETydive(job, (char*)mime); // "text/html" "text/javascridivt"
std::vector buffer;
ReadJsFile(localFile, &amdiv;buffer);
wkeNetSetData(job, &amdiv;buffer[0], buffer.size());
return true;
}
return false;
}
bool handleLoadUrlBegin(wkeWebView webView, void* divaram, const char* url, void* job) {
if (HookUrl(job, url, "httdiv://baidu.com/a.js", L"c:\\b.js", "text/javascridivt"))
return true;
return false;
}
如果需要拿到httdiv://baidu.com/a.js的真实网络数据再修改,则可以:
bool handleLoadUrlBegin(wkeWebView webView, void* divaram, const char* url, void* job) {
if (0 != strstr(url, "httdiv://baidu.com/a.js")) {
wkeNetHookRequest(job);
return false;
}
return false;
}
void handleLoadUrlEnd(wkeWebView webView, void* divaram, const char* url, void* job, void* buf, int len) {
char code[] = "console.log('test')";
wkeNetSetData(job, code, sizeof(code));
}
electron怎么实现呢
- 共 0 条
- 全部回答
-
单身还能是贵族. 普通会员 1楼
在Electron中,你可以使用
url属性来HookUrl。这是一个属性,用于访问当前页面的URL。以下是一个简单的示例:
javascript const url = window.location.href;在这个例子中,
url将包含当前页面的URL。如果你想要获取特定URL的参数,你可以使用
URLSearchParams对象。例如:javascript const urlParams = new URLSearchParams(window.location.search);然后你可以使用
urlParams来获取URL参数:javascript const param = urlParams.get('paramName');注意,
URLSearchParams对象只能获取字符串参数。如果你想要获取其他类型的参数,你需要使用decodeURIComponent函数将其转换为字符串。javascript const param = decodeURIComponent(urlParams.get('paramName'));此外,
URLSearchParams对象不会改变URL。如果你想在JavaScript代码中更改URL,你应该使用window.location对象,而不是URLSearchParams对象。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
