国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue.js uni-app 混合模式原生App webview與H5的交互

這篇具有很好參考價值的文章主要介紹了Vue.js uni-app 混合模式原生App webview與H5的交互。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

在現(xiàn)代移動應(yīng)用開發(fā)中,原生App與H5頁面之間的交互已經(jīng)成為一個常見的需求。本文將介紹如何在Vue.js框架中實(shí)現(xiàn)原生App與H5頁面之間的數(shù)據(jù)傳遞和方法調(diào)用。我們將通過一個簡單的示例來展示如何實(shí)現(xiàn)這一功能。

效果圖如下:
Vue.js uni-app 混合模式原生App webview與H5的交互,vue.js,uni-app,交互,javascript,html5,前端

首先,我們需要在Vue.js項(xiàng)目中引入原生App與H5頁面之間的通信橋梁。在這個示例中,我們將使用一個名為bridge.js的文件來實(shí)現(xiàn)這個功能。bridge.js文件內(nèi)容如下:

// #ifdef H5
import Vue from 'vue';
import { registerHandler } from '@/utils/bridge.js';
Vue.prototype.$bridge = {
  registerHandler(name, handler) {
    registerHandler(name, handler);
  },
};
// #endif

接下來,我們在Vue.js組件中定義兩個方法:appToH5()h5ToApp()。這兩個方法分別用于實(shí)現(xiàn)原生App向H5頁面?zhèn)鬟f數(shù)據(jù)和H5頁面向原生App發(fā)送數(shù)據(jù)的功能。

<template>
  <view class="content">
    <view class="text-area" @click="appToH5()">原生app調(diào)用H5方法(原生給H5傳值)</view>
    <view class="text-area" @click="h5ToApp()">H5調(diào)用原生App方法 (H5給原生傳值)</view>
  </view>
</template>

在Vue.js組件的methods對象中,我們定義了這兩個方法的具體實(shí)現(xiàn):

export default {
  data() {
    return {
      title: 'Hello',
      myObjData: {},
    };
  },
  mounted() {
    this.appToH5();
  },
  methods: {
    appToH5() {
      const handlerName = 'dataToJs'; // 在bridge.js中注冊的處理函數(shù)名
      const data = JSON.stringify(this.myObjData); // 需要傳遞的數(shù)據(jù),這里以JSON字符串形式表示
      const responseCallback = (responseData) => console.log('H5收到原生數(shù)據(jù):', responseData); // H5接收到數(shù)據(jù)的回調(diào)函數(shù)

      // 在bridge.js中注冊處理函數(shù),并將數(shù)據(jù)傳遞給H5頁面
      this.$bridge.registerHandler(handlerName, (data, responseCallback) => {
        if (typeof data === 'string') {
          const parsedData = JSON.parse(data);
        } else {
          const parsedData = data;
        }
        responseCallback(parsedData); // 將解析后的數(shù)據(jù)傳遞給H5頁面的回調(diào)函數(shù)
      });
    },
    h5ToApp() {
      const handlerName = 'goLogin'; // 在bridge.js中注冊的處理函數(shù)名
      const userInfo = 'testUserInfo'; // 需要傳遞給原生App的用戶信息,這里以字符串形式表示
      const responseCallback = (res) => console.log('原生App收到H5數(shù)據(jù):', res); // H5接收到數(shù)據(jù)的回調(diào)函數(shù)

      // 在bridge.js中調(diào)用原生App的方法,并將用戶信息傳遞給原生App
      this.$bridge.callHandler(handlerName, userInfo, responseCallback);
    },
  },
};

在這個示例中,我們首先在Vue.js組件的methods對象中定義了appToH5()h5ToApp()兩個方法。在appToH5()方法中,我們首先獲取需要傳遞給H5頁面的數(shù)據(jù),然后在bridge.js文件中注冊一個處理函數(shù),該函數(shù)負(fù)責(zé)將數(shù)據(jù)從JavaScript對象轉(zhuǎn)換為JSON字符串,并將其傳遞給H5頁面。同時,我們還定義了一個回調(diào)函數(shù),用于接收H5頁面返回的數(shù)據(jù)。最后,我們調(diào)用this.$bridge.registerHandler()方法注冊處理函數(shù)。

原生App實(shí)現(xiàn)方式,使用WebViewJavascriptBridge框架

一、引入WebViewJavascriptBridge框架

首先,我們需要在項(xiàng)目中引入WebViewJavascriptBridge框架。這個框架提供了一個橋接iOS和JavaScript的方法,使得我們可以在iOS中調(diào)用JavaScript函數(shù),也可以在JavaScript中調(diào)用iOS方法。

// 引入WebViewJavascriptBridge框架
#import <WebViewJavascriptBridge/WebViewJavascriptBridge.h>

二、創(chuàng)建橋接對象

在iOS代碼中,我們需要創(chuàng)建一個WKWebViewJavascriptBridge對象,這個對象負(fù)責(zé)管理JavaScript與iOS之間的通信。

// js與oc交互
_bridge = [WKWebViewJavascriptBridge bridgeForWebView:self.currentWebView];
// 設(shè)置wkwebview代理對象
[_bridge setWebViewDelegate:self];

三、注冊原生方法給JS調(diào)用

接下來,我們需要在iOS代碼中注冊一些原生方法,以便JavaScript可以調(diào)用這些方法。這些方法通常用于處理一些特殊的業(yè)務(wù)邏輯,例如分享功能和返回操作。

// 注冊原生方法給JS調(diào)用
- (void)registObjcFunction {
    // 注冊分享方法
    [self.bridge registerHandler:@"shareClick" handler:^(id data, WVJBResponseCallback responseCallback) {
        [ZJShareManage shareImgWithVC:self title:data[@"title"] describeTitle:data[@"describeTitle"] andUrl:data[@"url"]];
    }];
    
    // 注冊返回方法
    [self.bridge registerHandler:@"goNavBack" handler:^(id data, WVJBResponseCallback responseCallback) {
        [self.navigationController popViewControllerAnimated:YES];
    }];
}

四、調(diào)用JavaScript方法

現(xiàn)在,我們已經(jīng)注冊了一些原生方法,接下來就可以在iOS代碼中調(diào)用JavaScript方法了。我們只需要使用_bridge對象的callHandler:data:responseCallback:方法即可。

if (self.jsData && self.methodString) {
    [_bridge callHandler:_methodString data:_jsData responseCallback:^(id responseData) {
        DBLog(@"responseData = %@",responseData);
    }];
}

五、總結(jié)

通過本文的介紹,我們了解了如何使用WebViewJavascriptBridge框架在iOS中與JavaScript進(jìn)行交互。這種交互方式不僅簡單易用,而且能夠提高開發(fā)效率。希望本文對你有所幫助,如果你有任何疑問或者建議,歡迎留言討論。

閱讀全文下載完整組件代碼請關(guān)注微信公眾號: 前端組件開發(fā)
Vue.js uni-app 混合模式原生App webview與H5的交互,vue.js,uni-app,交互,javascript,html5,前端文章來源地址http://www.zghlxwxcb.cn/news/detail-600470.html

到了這里,關(guān)于Vue.js uni-app 混合模式原生App webview與H5的交互的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • uni-app中監(jiān)聽網(wǎng)絡(luò)狀態(tài),并在嵌入webView頁面的組件中添加網(wǎng)絡(luò)監(jiān)測

    uni-app中監(jiān)聽網(wǎng)絡(luò)狀態(tài),并在嵌入webView頁面的組件中添加網(wǎng)絡(luò)監(jiān)測

    下載插件 打開網(wǎng)絡(luò)異常組件頁面,點(diǎn)擊\\\"下載插件并導(dǎo)入HBuilderX\\\"按鈕,打開HBuilderX軟件后,選擇需要導(dǎo)入插件的項(xiàng)目,點(diǎn)擊“確定即可”。 使用插件 pages/network/index頁面,仿照微信。 效果展示 修改網(wǎng)絡(luò)監(jiān)測組件mz-network-error 當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變化時emit相關(guān)事件 修改組件調(diào)用

    2024年02月12日
    瀏覽(40)
  • uni-app之a(chǎn)ndroid原生插件開發(fā)

    uni-app之a(chǎn)ndroid原生插件開發(fā)

    一 插件簡介 1.1?當(dāng)HBuilderX中提供的能力無法滿足App功能需求,需要通過使用Andorid/iOS原生開發(fā)實(shí)現(xiàn)時,可使用App離線SDK開發(fā)原生插件來擴(kuò)展原生能力。 1.2 插件類型有兩種,Module模式和Component模式 Module模式:能力擴(kuò)展,無嵌入窗體的UI控件。大部分插件都是屬于此類,比如調(diào)

    2024年02月07日
    瀏覽(26)
  • 微信小程序修改原生組件樣式(uni-app)

    微信小程序修改原生組件樣式 全局修改,直接將修改的樣式寫在全局的樣式文件中; 特殊情況:修改swiper指示點(diǎn)樣式時,需要包裹在swiper的樣式選擇器下才生效。 直接將下列代碼放在全局樣式中是不會生效的,需要加上swiper組件的元素選擇器或swiper組件的其他樣式名也可。

    2024年02月05日
    瀏覽(105)
  • uni-app嵌入微信小程序原生代碼

    uni-app嵌入微信小程序原生代碼

    使用uni-app有時需要用到微信小程序原生代碼 解析: uni-app項(xiàng)目結(jié)構(gòu)跟原生小程序的項(xiàng)目結(jié)構(gòu)有著不一致的區(qū)別,如果說開發(fā)過程中必須要使用原生代碼,就需要把原生代碼作為組件的方式在uni-app項(xiàng)目中引入使用 官網(wǎng)為了應(yīng)對這一個需求,就給出了以下方法,供開發(fā)者實(shí)現(xiàn) wxcompone

    2024年02月05日
    瀏覽(98)
  • 解決uni-app小程序原生tabbar 添加陰影問題

    解決uni-app小程序原生tabbar 添加陰影問題

    下面是實(shí)現(xiàn)的效果 ?步驟1 創(chuàng)建一個組件? 文件名和組件名要一致 ?步驟2? 在組件中實(shí)現(xiàn)陰影效果 步驟3 在tabbar 頁面使用? 直接使用 即可 不用引入 ?

    2024年02月07日
    瀏覽(106)
  • 語法速通 uni-app隨筆【uni-app】【微信小程序】【vue】

    語法速通 uni-app隨筆【uni-app】【微信小程序】【vue】

    其中, pages 目錄/ index 目錄【必有】: index.js 編寫業(yè)務(wù)邏輯 【初始數(shù)據(jù),生命周期函數(shù)】 index.json 編寫配置 index.wxml 編寫模板 【可理解為本頁html】 index.wxss 【可理解為本頁css】 直接輸入敲回車,連尖括號都不需要就可以標(biāo)簽補(bǔ)全 1)初始數(shù)據(jù)寫死 在 index.wxml 引入變

    2024年02月12日
    瀏覽(228)
  • 微信小程序原生框架轉(zhuǎn)Uni-App:你需要知道的一切

    微信小程序原生框架轉(zhuǎn)Uni-App:你需要知道的一切

    博主 默語帶您 Go to New World. ? 個人主頁—— 默語 的博客???? 《java 面試題大全》 ??惟余輩才疏學(xué)淺,臨摹之作或有不妥之處,還請讀者海涵指正。??? 《MYSQL從入門到精通》數(shù)據(jù)庫是開發(fā)者必會基礎(chǔ)之一~ ?? 吾期望此文有資助于爾,即使粗淺難及深廣,亦備添少許微薄

    2024年02月09日
    瀏覽(30)
  • uni-app - App 平臺內(nèi)嵌網(wǎng)頁物理手機(jī)自帶返回鍵失效解決方案(內(nèi)嵌的 webview 網(wǎng)頁 H5 打包后手機(jī)物理返回鍵無效直接退出應(yīng)用了)

    uni-app - App 平臺內(nèi)嵌網(wǎng)頁物理手機(jī)自帶返回鍵失效解決方案(內(nèi)嵌的 webview 網(wǎng)頁 H5 打包后手機(jī)物理返回鍵無效直接退出應(yīng)用了)

    當(dāng)您需要打包 App(*.apk) 平臺時,發(fā)現(xiàn)內(nèi)嵌的 H5 頁面雖然可以正常顯示與運(yùn)行,但是手機(jī)的物理返回鍵卻無法使用,當(dāng)點(diǎn)擊手機(jī)物理返回按鍵(或手勢)時,直接顯示 “再按一次退出應(yīng)用”,而 并非返回上一個\\\"網(wǎng)頁\\\"。 出現(xiàn)這種情況的原因是, 內(nèi)嵌的網(wǎng)頁與您的 App “毫無

    2024年02月09日
    瀏覽(111)
  • uni-app:vue3 + uni-app 在微信小程序中無法使用app.component全局注冊組件

    按上文中的代碼執(zhí)行后,會發(fā)現(xiàn)在微信小程序開發(fā)中全局注冊的組件是無法顯示的,這是uniapp的一個未解決bug, 在uniapp中出了可以通過vue實(shí)例的component方法注冊全局組件外,uniapp支持另一種全局注冊的方式,就是通過 easycom 掃描注冊,步驟如下 easycom 的掃描流程是:通過代碼

    2024年02月16日
    瀏覽(105)
  • uni-app:js修改元素樣式(寬度、外邊距)

    uni-app:js修改元素樣式(寬度、外邊距)

    效果 代碼 1、在 view 元素上添加一個 ref 屬性 ,用于在JavaScript代碼中獲取對該元素的引用:view ref=\\\" myView \\\" id=\\\"mybox\\\"/view 2、獲取元素引用 :const viewElement = this.$refs. myView .$el; 3、修改元素寬度:viewElement.style.width = \\\'100px\\\'; 4、修改元素左外邊距:viewElement.style.marginLeft = \\\'20px\\\'; 這種

    2024年02月07日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包