当前位置: 首页 > news >正文

如何判断网页是不是鸿蒙手机浏览器里打开

在鸿蒙系统中,判断网页是否在鸿蒙手机浏览器中打开,可以通过以下方法实现:


方法一:通过 User-Agent 判断(首选)

鸿蒙系统的浏览器(如华为浏览器)会在 User-Agent 中包含特定的标识符(如 OpenHarmony )。可以通过 JavaScript 检测 User-Agent 来判断。

通过web端获取agent如下:

70b5a4727376a5653d6c366eb8855843.png

示例代码
function isHarmonyOSBrowser() {
const userAgent = navigator.userAgent;
return navigator.userAgent.indexOf("Harmony") > -1
// 或者 判断是否包含 OpenHarmony或 HUAWEI 标识
return/OpenHarmony|HUAWEI/i.test(userAgent);
}

if (isHarmonyOSBrowser()) {
console.log('当前网页在鸿蒙系统浏览器中打开');
} else {
console.log('当前网页不在鸿蒙系统浏览器中打开');
}

方法二:通过鸿蒙 JS API 判断

如果网页运行在鸿蒙系统的 WebView 中,可以通过鸿蒙提供的 JS API 来判断。

示例代码
function isHarmonyOSWebView() {
// 判断是否存在鸿蒙特有的 JS API
returntypeofwindow.harmony !== 'undefined';
}

if (isHarmonyOSWebView()) {
console.log('当前网页在鸿蒙系统的 WebView 中打开');
} else {
console.log('当前网页不在鸿蒙系统的 WebView 中打开');
}

方法三:结合鸿蒙原生能力(适用于混合开发)

如果是鸿蒙应用内嵌的 WebView,可以通过原生代码注入环境变量或调用原生方法来判断。

示例代码(原生 + JS)
  1. 原生代码注入环境变量

    // 在鸿蒙原生代码中注入环境变量
    webView.getWebViewClient().setJavaScriptEnabled(true);
    webView.loadUrl("javascript:window.isHarmonyOS = true;");
  2. JS 判断

    if (window.isHarmonyOS) {
      console.log('当前网页在鸿蒙应用内嵌的 WebView 中打开');
    } else {
      console.log('当前网页不在鸿蒙应用内嵌的 WebView 中打开');
    }

方法四:通过鸿蒙浏览器的特有行为判断

鸿蒙系统的浏览器可能会有一些特有的行为或属性,可以通过检测这些行为来判断。

示例代码
function isHarmonyOSBrowser() {
// 检测是否存在鸿蒙浏览器的特有行为
const isHarmonyOS = /HarmonyOS/i.test(navigator.userAgent);
const isHuaweiBrowser = /HUAWEI/i.test(navigator.userAgent);
return isHarmonyOS || isHuaweiBrowser;
}

if (isHarmonyOSBrowser()) {
console.log('当前网页在鸿蒙系统浏览器中打开');
} else {
console.log('当前网页不在鸿蒙系统浏览器中打开');
}

总结

方法

适用场景

优点

缺点

User-Agent

通用场景

简单易用

可能被篡改或伪造

鸿蒙 JS API

鸿蒙 WebView 场景

精准判断

仅适用于鸿蒙 WebView

原生注入变量

鸿蒙应用内嵌 WebView

高度可控

需要原生代码配合

特有行为检测

通用场景

无需额外配置

依赖浏览器行为,可能不准确

推荐优先使用 User-Agent 判断,如果需要在鸿蒙应用内嵌 WebView 中判断,可以结合原生代码注入环境变量。

关注我获取更多知识或者投稿

69ef28a4e1a46b1d234ccc8f9344e347.jpeg

4e3a8b1913d289602542dcd5636c0576.jpeg

http://www.dtcms.com/a/17294.html

相关文章:

  • 道路运输安全员考试题库及答案
  • 算法-哈希表篇05-四数相加II
  • Python 进阶:元类编程
  • 单例设计模式
  • 算法题(67):最长连续序列
  • 一个让Stable Diffusion更稳定、更易用的Github开源项目
  • docker学习---第3步:docker实操大模型
  • 《pytorch》——优化器的解析和使用
  • 01.01、判定字符是否唯一
  • 【IC】AI处理器核心--第二部分 用于处理 DNN 的硬件设计
  • IoTDB 节点宕机后集群恢复
  • mysql的索引
  • C#+UDP接收数据,并将数据保存到redis,定时同步到数据库Sql Server中
  • vue3 项目如何接入 AI 大模型
  • P1878 舞蹈课(详解)c++
  • VUE环境搭建
  • k8s向容器内传文件与下载文件
  • lightning.pytorch.callbacks内置的Callbacks介绍
  • Nginx 上安装 SSL 证书并启用 HTTPS 访问
  • cpu温度多少正常?cpu温度过高怎么办
  • 7. Docker 容器数据卷的使用(超详细的讲解说明)
  • 编译安装vsftpd后,虚拟用户模式下登录提示:“530 Login incorrect.“
  • 如果维护了多种语言版本的文本对应关系,另一种语言只需要将对应文本填入对应位置即可,这种情况应该如何实现自动填入
  • 【verilog】函数clogb2的解读
  • 【python】http.server内置库构建临时文件服务
  • C语言蓝桥杯1003: [编程入门]密码破译
  • 【第4章:循环神经网络(RNN)与长短时记忆网络(LSTM)——4.2 LSTM的引入与解决长期依赖问题的方法】
  • 第一章嵌入式系统概论考点05数字(电子)文本
  • 计算机网络-八股-学习摘要
  • 【学术投稿】第五届计算机网络安全与软件工程(CNSSE 2025)