如何判断网页是不是鸿蒙手机浏览器里打开
在鸿蒙系统中,判断网页是否在鸿蒙手机浏览器中打开,可以通过以下方法实现:
方法一:通过 User-Agent
判断(首选)
鸿蒙系统的浏览器(如华为浏览器)会在 User-Agent
中包含特定的标识符(如 OpenHarmony
)。可以通过 JavaScript 检测 User-Agent
来判断。
通过web端获取agent如下:
示例代码
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 APIreturntypeofwindow.harmony !== \'undefined\';}if (isHarmonyOSWebView()) {console.log(\'当前网页在鸿蒙系统的 WebView 中打开\');} else {console.log(\'当前网页不在鸿蒙系统的 WebView 中打开\');}
方法三:结合鸿蒙原生能力(适用于混合开发)
如果是鸿蒙应用内嵌的 WebView,可以通过原生代码注入环境变量或调用原生方法来判断。
示例代码(原生 + JS)
-
原生代码注入环境变量
// 在鸿蒙原生代码中注入环境变量webView.getWebViewClient().setJavaScriptEnabled(true);webView.loadUrl(\"javascript:window.isHarmonyOS = true;\");
-
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(\'当前网页不在鸿蒙系统浏览器中打开\');}
总结
方法
适用场景
优点
缺点
通用场景
简单易用
可能被篡改或伪造
鸿蒙 WebView 场景
精准判断
仅适用于鸿蒙 WebView
鸿蒙应用内嵌 WebView
高度可控
需要原生代码配合
通用场景
无需额外配置
依赖浏览器行为,可能不准确
推荐优先使用 User-Agent 判断,如果需要在鸿蒙应用内嵌 WebView 中判断,可以结合原生代码注入环境变量。
关注我获取更多知识或者投稿