记录Web组件onLoadIntercept拦截用法,HarmonyOS 鸿蒙Next大多网页会检测userAgent所以需要在onControllerAttached设置一下带android或ios特征的标识。
记录Web组件onLoadIntercept拦截用法,HarmonyOS 鸿蒙Next大多网页会检测userAgent所以需要在onControllerAttached设置一下带android或ios特征的标识。
Webview 自定义 UA(User Agent):在 Webview 加载时,会修改 User Agent 字符串,在原有基础上添加 Android 前缀。
URL 加载拦截:当 Webview 尝试加载 URL 时,会检查 URL 是否以 ‘yuque’ 开头,如果是,则重定向到百度首页,并阻止原始请求。
import { webview } from '@kit.ArkWeb';
@Entry
@Component
struct Page013 {
controller: webview.WebviewController = new webview.WebviewController();
build() {
Column() {
Web({
src: "https://www.yuque.com/yuque/ekrzd1/dqdt6f",
controller: this.controller
})
.width('100%')
.height('100%')
.domStorageAccess(true)//设置是否开启文档对象模型存储接口(DOM Storage API)权限。
.javaScriptAccess(true)//设置是否允许执行JavaScript脚本,默认允许执行。
.databaseAccess(true)//设置是否开启数据库存储API权限,默认不开启。
.mixedMode(MixedMode.All)//HTTP和HTTPS混合
.fileAccess(true)//设置是否开启应用中文件系统的访问,默认启用。
.imageAccess(true)//设置是否允许自动加载图片资源,默认允许。
.geolocationAccess(true)//设置是否开启获取地理位置权限,默认开启。
.onlineImageAccess(true)//设置是否允许从网络加载图片资源(通过HTTP和HTTPS访问的资源),默认允许访问。
.mediaPlayGestureAccess(true)//设置有声视频播放是否需要用户手动点击,静音视频播放不受该接口管控,默认需要。
.backgroundColor('#ffffff')//设置白色背景
.onControllerAttached(() => {
/**自定义UA*/
let userAgent = 'Android' + this.controller.getUserAgent()
this.controller.setCustomUserAgent(userAgent);
})
.onLoadIntercept((event) => {
console.log('url:' + event.data.getRequestUrl())
console.log('isMainFrame:' + event.data.isMainFrame())
console.log('isRedirect:' + event.data.isRedirect())
console.log('isRequestGesture:' + event.data.isRequestGesture())
let url = event.data.getRequestUrl()
//yuque://platformapi/startUrl?source=unknown&externalOpenApp=true&url=https%3A%2F%2Fwww.yuque.com%2Fyuque%2Fekrzd1%2Fdqdt6f
if(url.indexOf('yuque')==0){
this.controller.loadUrl("https://www.baidu.com")
return true;
}
return false
})
}.width('100%').height('100%').align(Alignment.Top)
}
}
更多关于记录Web组件onLoadIntercept拦截用法,HarmonyOS 鸿蒙Next大多网页会检测userAgent所以需要在onControllerAttached设置一下带android或ios特征的标识。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
🌹
更多关于记录Web组件onLoadIntercept拦截用法,HarmonyOS 鸿蒙Next大多网页会检测userAgent所以需要在onControllerAttached设置一下带android或ios特征的标识。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,针对Web组件的onLoadIntercept
拦截用法,特别是在处理userAgent字符串以满足网页兼容性需求时,可以通过以下方式进行操作:
-
定义拦截器:首先,在你的Web组件中定义一个
onLoadIntercept
拦截器。这个拦截器会在网页加载前被触发,允许你修改请求或执行其他逻辑。 -
修改userAgent:在
onLoadIntercept
回调中,检查并修改即将发送的HTTP请求的userAgent字段。由于许多网页会检测userAgent来适配不同的平台,你可以在这里添加android
或ios
的特征标识,以确保网页能够正确渲染或提供预期的功能。 -
应用设置:在
onControllerAttached
生命周期方法中,确保你的拦截器已经正确设置并启用。这是确保拦截器能够在Web组件加载前生效的关键步骤。 -
测试验证:最后,通过加载不同类型的网页来验证你的userAgent修改是否有效。确保网页能够正确显示且功能正常。
示例代码(伪代码,具体实现需根据实际开发环境调整):
// 假设这是你的Web组件定义部分
webComponent.onLoadIntercept((request) => {
request.headers['User-Agent'] += '; Android/10; AppleWebKit/537.36';
return true; // 返回true表示允许请求继续
});
// 在onControllerAttached中确保拦截器已设置
webComponent.onControllerAttached(() => {
// 初始化或配置拦截器的代码
});
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,