H5開發中常用的js方法

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

h5和app之間的webview交互

  • 這是常用的交互方法之一,iOS可以使用WKWebView,安卓可以使用JsBridge,完成常見的交互效果。
function webViewHandler(iosCallback, adrCallback) {if (getMobileOperatingSystem() === 'iOS') {setupWebViewJavascriptBridge(iosCallback);} else if (getMobileOperatingSystem() === 'Android') {connectWebViewJavascriptBridge(adrCallback);}/*獲取移動終端的操作系統,mobile*/function getMobileOperatingSystem() {var userAgent = navigator.userAgent || navigator.vendor || window.opera;if (/windows phone/i.test(userAgent)) {return "Windows Phone";}if (/android/i.test(userAgent)) {return "Android";}if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {return "iOS";}return "unknown";}/*設置頁面js橋,mobile*/function setupWebViewJavascriptBridge(callback) {if (window.WebViewJavascriptBridge) {return callback(WebViewJavascriptBridge);}if (window.WVJBCallbacks) {return window.WVJBCallbacks.push(callback);}window.WVJBCallbacks = [callback];var WVJBIframe = document.createElement('iframe');WVJBIframe.style.display = 'none';WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';document.documentElement.appendChild(WVJBIframe);setTimeout(function () {document.documentElement.removeChild(WVJBIframe)}, 0)}/*連接頁面js橋,mobile*/function connectWebViewJavascriptBridge(callback) {if (window.WebViewJavascriptBridge) {callback(WebViewJavascriptBridge)} else {document.addEventListener('WebViewJavascriptBridgeReady', function () {callback(WebViewJavascriptBridge)},false);}}
};
  • 調用方式如下:
webViewHandler(function (bridge) {//JsCallAppFuncName是js調用客戶端iOS的方法名,params則是h5傳給客戶端app的參數,appCallbackHander是調用成功后js收到的回調。bridge.callHandler('JsCallAppFuncName', {"params": true},callbackAppHander);// AppCallJsFuncName是js注冊的方法,供客戶端iOS調用,callbackJsFunc是調用后js執行的回調bridge.registerHandler('AppCallJsFuncName', callbackJsFunc);
}, function (bridge) {// 初始化bridge.init(function (message, responseCallback) {responseCallback({'Javascript Responds': 'Wee!'});});// 方法參數和ios是一樣的,只是Android必須要有初始化過程window.WebViewJavascriptBridge.callHandler('JsCallAppFuncName', {'params': true}, function (responseData) {console.log(responseData)});bridge.registerHandler('AppCallJsFuncName', callbackJsFunc);
})

獲取設備的基本信息和環境

function getMobileInfo() {var info = {screen: {},device: {deviceType: 0,deviceVal: ''},env: {type: 0,value: ''}};// 屏幕大小info.screen.width = window.screen.height;info.screen.height = window.screen.width;// 設備終端var sUserAgent = navigator.userAgent.toLowerCase(),bIsiOs = (/iPad|iPhone|iPod/.test(sUserAgent) && !window.MSStream),bIsAndroid = sUserAgent.match(/android/i) == "android",bIsMidp = sUserAgent.match(/midp/i) == "midp",bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4",bIsUc = sUserAgent.match(/ucweb/i) == "ucweb",bIsCE = sUserAgent.match(/windows ce/i) == "windows ce",bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile",isWeixin = sUserAgent.match(/MicroMessenger/i) == "micromessenger",isWeiBo = sUserAgent.match(/WeiBo/i) == "weibo",isQQ = sUserAgent.match(/QQ/i) == "qq";if (bIsiOs) {info.device.deviceType = 1;info.device.deviceVal = 'iOS';} else if (bIsAndroid) {info.device.deviceType = 2;info.device.deviceVal = 'Android';}else if (bIsWM) {info.device.deviceType = 3;info.device.deviceVal = 'Windows mobile';} else {info.device.deviceType = 0;info.device.deviceVal = 'pc';}// 第三方環境if (isWeixin) {info.env.type = 1;info.env.value = 'weixin';} else if (isWeiBo) {info.env.type = 2;info.env.value = 'weibo';} else if (isQQ) {info.env.type = 3;info.env.value = 'qq';} else {info.env.type = 0;info.env.value = '其他';}return info;}
  • 返回的是設備屏幕大小,終端類型,以及所處環境(微信,微博,qq)

轉載于:https://my.oschina.net/chinahufei/blog/1578106

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285396.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285396.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285396.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【前端優化】

如何進行前端優化 (1) 減少http 請求次數:css spirit(多張小圖放一個大圖上,用定位選擇不同小圖),data uri(壓縮圖片大小), 圖片大小控制合適;網頁Gzip&#…

GPS RTK(銀河1)基準站架設、移動站設置完整操作流程

本文講解GPS RTK(銀河1)基站架設完整操作流程,包括相對坐標、點校正等操作。 文章目錄 一、架設基準站二、啟動基準站三、架設移動站四、設置移動站一、架設基準站 基準站一定要架設在視野比較開闊,周圍環境比較空曠的地方,地勢比較高的地方;避免架在高壓輸變電設備附近…

在.NET 6.0上使用Kestrel配置和自定義HTTPS

本章是《定制ASP NET 6.0框架系列文章》的第四篇。在本章,我們將學習ASP.NET Core的Kestrel配置和自定義HTTPS,好我們開始正文。在ASP.NET Core中,默認情況下HTTPS處于打開狀態,這個不是問題,我們無需禁用它。因為如果…

dom4j-2.1.1 jaxen-1.1.6 讀取xml數據源

<?xml version"1.0" encoding"UTF-8"?> <data><row><id>1</id><name>JackieChen</name></row><row><id>2</id><name>TomLee</name></row> </data> package…

Virtualbox安裝增強工具失敗

在安裝Virtualbox增強工具安裝時出現unable to find the sources of your current Linux kernel&#xff0c;安裝失敗&#xff0c;導致主機與虛擬機之間不能共享文件夾&#xff0c;不能復制粘貼&#xff0c;鼠標也不能直接移動到物理機&#xff0c;需要按快捷鍵才行。 解決辦法…

C語言試題118之求1到20的每個數的階層之和

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:求 1+2!+3!+…+20!的和 分析:此程序只是把累加變成了累乘。 2 、溫馨提示 想獲取更多…

吐血整理:C#順序、選擇、循環結構用法與案例,這一篇就夠了!

C#語言中用于結構化程序設計的三種基本結構是:順序結構、選擇結構、循環結構。本文詳細整理了以上三種結構的用法,案例。 文章目錄 4.1 順序結構4.1.1 賦值語句4.1.2 輸入語句4.1.3 輸出語句4.1.4 復合語句4.1.5 應用實例4.2 選擇結構4.2.1 if條件語句4.2.2 switch結構4.3 循…

java.lang.NoSuchFieldError: EMPTY_ORDERED_ITERATOR起因及解決辦法

java.lang.NoSuchFieldError: EMPTY_ORDERED_ITERATOR 最近這個錯誤遇到了好多次&#xff0c;不過都很輕松的解決了&#xff0c;問題的起因是多了一個collection包&#xff0c;如下圖 看到了&#xff0c;只要把其中的一個刪除掉&#xff0c;更新啟動Tomcat就行了。 本文轉自suc…

由ASP.NET Core根據路徑下載文件異常引發的探究

前言最近在開發新的項目&#xff0c;使用的是ASP.NET Core6.0版本的框架。由于項目中存在文件下載功能&#xff0c;沒有使用類似MinIO或OSS之類的分布式文件系統&#xff0c;而是下載本地文件&#xff0c;也就是根據本地文件路徑進行下載。這其中遇到了一個問題&#xff0c;是關…

[轉]EL函數、自定義EL函數、自定義標簽

EL函數 1、EL函數的作用&#xff1a;操作字符串 2、在JSP頁面中要引入EL函數庫 <% taglib prefix"fn" uri"http://java.sun.com/jsp/jstl/functions" %> 3、語法 ${ fn:方法名(參數) } 4、實例 <% page language"java" contentTyp…

XidianOJ 1019 自然數的秘密

題目描述 題意&#xff1a; 已知&#xff1a;N&#xff01;N*(N-1)*...*2*1 找到最小自然數 N, 使N!末尾有連續 M個零. 例如, 5! 的結尾包含1個零. 輸入 第一行輸入一個整數T,表示有T組測試數據。 對于每組測試數據&#xff0c;輸入一個整數M&#xff0c;表示包含M個零。&#…

C語言試題119之利用遞歸方法求 5的階層

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:利用遞歸方法求 5的階層 分析:遞歸公式:fn=fn_1*4的階層 2 、溫馨提示 想獲取更多C…

深入學習http協議(轉)

http://www.blogjava.net/zjusuyong/articles/304788.html轉載來的&#xff0c;沒看到原文地址。http協議學習系列1. 基礎概念篇1.1 介紹HTTP是Hyper Text Transfer Protocol&#xff08;超文本傳輸協議&#xff09;的縮寫。它的發展是萬維網協會&#xff08;World Wide Web Co…

【ArcGIS風暴】ArcGIS+CASS點云(.las)數據生成等高線方法案例精解

本文講解基于點云LAS數據,在ArcGIS+CASS平臺上生成等高線的方法。 擴展閱讀: 什么是點云?什么是Las數據集?一篇文章告訴你點云數據的奧秘 ArcGIS+CASS點云(.las)數據生成等高線方法案例精解 ArcGIS平臺上點云(.las)數據生成等高線方法案例精解 文章目錄 一、LAS轉多點二、…

CSS浮動屬性Float到底什么怎么回事,下面詳細解釋一下

float 是 css 的定位屬性。在傳統的印刷布局中&#xff0c;文本可以按照需要圍繞圖片。一般把這種方式稱為“文本環繞”。在網頁設計中&#xff0c;應用了CSS的float屬性的頁面元素就像在印刷布局里面的被文字包圍的圖片一樣。浮動的元素仍然是網頁流的一部分。這與使用絕對 定…

MAUI Developer Day in GCR

點擊藍字關注我們編輯&#xff1a;Alan Wang排版&#xff1a;Rani Sun活動介紹作為一個支持在單一代碼庫中開發能夠運行在 Android、iOS、macOS 和 Windows 等多平臺的應用程序的跨平臺框架&#xff0c;.NET MAUI &#xff08;多平臺應用程序用戶界面&#xff09;還在預覽版時就…

C語言試題126之請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續 判斷第二個字母。

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續 判斷第二…

【ArcGIS風暴】ArcGIS點云抽稀(稀疏化LAS點)詳解案例教程

考慮對過采樣 LAS 數據(例如通過攝影測量方式獲得的點云以及多個疊加激光雷達掃描的返回值)使用稀疏化LAS點工具,以優化顯示性能和加速分析操作。 文章目錄 1. 創建las數據集2. 稀疏化LAS點適用版本:ArcGIS10.6以上。 1. 創建las數據集 擴展閱讀:ArcGIS10.6創建LAS數據集…

20145313張雪純《信息安全系統設計基礎》第11周學習總結

20145313張雪純《信息安全系統設計基礎》第11周學習總結 教材 異常控制流&#xff08;ECF&#xff09; 最簡單的“平滑序列”類型的控制流是指PC中相鄰的指令在存儲器中也相鄰。而異常控制流則是指程序變量表示的內部程序狀態中的變化、系統狀態的變化等突發情況使得控制系統做…