HarmonyOS 鸿蒙Next WebView 设置 用户代理后(userAgent) js 注入的方法全部失效
HarmonyOS 鸿蒙Next WebView 设置 用户代理后(userAgent) js 注入的方法全部失效
使用web组件 由网页发起,调用设置用户代理的方法后, jsbridge 之后全部失效. 寻找解决方案,因为这是适配老项目, 想按照这种思路来解决.
this.bridge?.registerHandler(WebViewConstants.setUserAgentFuncName, async (data, callBack) => {
let params = this.parseParameters(data)
let userAgent = params["userAgent"] as string
let originalUserAgent = await this.controller?.runJavaScript("navigator.userAgent") ?? ""
try {
if (StrUtil.isNotBlank(userAgent)) {
if (originalUserAgent.indexOf(userAgent) > -1) {
} else {
this.controller?.setCustomUserAgent(userAgent)
this.controller?.refresh()
let params: Record<string, string> = { "data": userAgent, }
callBack(JsResult.success(params))
}
} else {
let defaultUserAgent = "Mozilla/5.0 (Phone; OpenHarmony 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile"
let userAgent = StrUtil.isNotBlank(originalUserAgent) ? originalUserAgent : defaultUserAgent
this.controller?.setCustomUserAgent(userAgent)
let params: Record<string, string> = { "data": userAgent, }
callBack(JsResult.success(params))
}
} catch (e) {
callBack(JsResult.error(e.message))
}
})
更多关于HarmonyOS 鸿蒙Next WebView 设置 用户代理后(userAgent) js 注入的方法全部失效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
设置用户代理(userAgent)理想的时机是在任何页面加载或JavaScript执行之前设置用户代理。您可以在onControllerAttached事件中设置用户代理,确保在任何页面加载之前都已设置完毕。
Web({ src: 'www.example.com', controller: this.controller })
.onControllerAttached(() => {
console.log("onControllerAttached");
try {
let userAgent = this.controller.getUserAgent() + this.customUserAgent;
this.controller.setCustomUserAgent(userAgent);
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
更多关于HarmonyOS 鸿蒙Next WebView 设置 用户代理后(userAgent) js 注入的方法全部失效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,Next WebView组件在用户代理(userAgent)被设置后,如果出现JavaScript注入方法全部失效的问题,这通常与WebView的安全策略或userAgent字符串的修改方式有关。
HarmonyOS为了增强应用的安全性,可能会对用户代理字符串的修改进行限制,或者修改后的userAgent影响了WebView对JavaScript的处理。当userAgent被更改后,可能触发了WebView的安全机制,导致JavaScript注入被阻止。
解决这类问题的一种方法是检查userAgent的设置方式,确保它符合HarmonyOS WebView的安全要求。同时,确认注入的JavaScript代码本身没有违反WebView的安全策略。
另外,由于HarmonyOS不断更新其系统安全策略,建议查阅最新的HarmonyOS开发文档,了解关于WebView和userAgent的最新要求和限制。
如果上述方法仍然无法解决问题,可能需要考虑使用其他方式实现功能,或者调整应用的设计以适应HarmonyOS的安全策略。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html