最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

小程序webView實(shí)現(xiàn)小程序內(nèi)嵌H5頁面的全過程

 更新時間:2024年07月16日 08:35:35   作者:Embrace924  
在微信小程序中內(nèi)嵌H5頁面是一種常見的需求,因為H5頁面具有靈活性和跨平臺性,可以彌補(bǔ)小程序原生代碼的不足,這篇文章主要給大家介紹了關(guān)于小程序webView實(shí)現(xiàn)小程序內(nèi)嵌H5頁面的相關(guān)資料,需要的朋友可以參考下

web-view | 微信開放文檔

本案例新建了一個 webView頁面  只渲染webView組件

配置路由,跳轉(zhuǎn)頁面的時候 前綴使用‘/subPages/webView/index?weburl=https://xxxxx’

componentDidMount 的時候 獲取路由中的 weburl 地址參數(shù)

  async componentDidMount() {
    const router = getCurrentInstance().router;
    const params = router.params;
   
    let url = params.weburl;
    // 對url進(jìn)行參數(shù)處理 ,可以增加需要傳遞給H5的token等其他參數(shù)

    this.setState({
      url: url, // 獲取其他小程序頁面 請求跳轉(zhuǎn)的地址
    });
  }  


  render() {
    const { url } = this.state;

    return (
    <WebView
        src={decodeURIComponent(url)} // H5地址  加上域名的全鏈路地址
        onMessage={(res) => {
          this.setPostMessage(res.detail.data); // 存儲H5傳回來的數(shù)據(jù) 可以存到公共區(qū)域 方便使用
        }}
      />
    );
  }
 

發(fā)起跳轉(zhuǎn)的方式:

const token=''; // 自行獲取token
const weburl='' ;// 自行定義地址
Taro.navigateTo({
    url: `/subPages/webView/index?weburl=${weburl}&token=${token}` ,
});

上面是跳轉(zhuǎn)到小程序的webview.jsx頁面  并且帶上了需要跳轉(zhuǎn)的H5地址weburl

在webview頁面加載的時候獲取H5地址 并添加在web-view標(biāo)簽上 

如果頁面中很多地方需要跳轉(zhuǎn)H5頁面 并且H5頁面是基本固定的域名 可以將Taro.navigateTo進(jìn)行封裝處理

案例:

const toWebFun = (type = 'navigateTo') => {
  return function (url, isRequireToken) {
    const params = queryToObj(url); // 
    const token = Taro.getStorageSync(ConstantList.TOKEN); // 
    const host = Config.HOST_H5; // H5固定域名
    const TaroNavigate = type === 'redirectTo' ? Taro.redirectTo : Taro.navigateTo;
    let path = '';
    let tokenKey = '?token=';
    let ismini = '?ismini=1'; // 個人定義代表小程序內(nèi)打開H5 方便區(qū)分

    // 帶有https鏈接情況 就不使用host固定域名
    if (url.includes('https://')) {
      path = `/subPages/webView/index?weburl=${encodeURIComponent(
        `${url}${url.indexOf('?') > -1 ? '&token=' : '?token='}${token}&ismini=1`,
      )}`;
      TaroNavigate({
        url: path,
      });
      return;
    }
    // 如果連接本身帶有?后面參數(shù) 則不要覆蓋 而是追加 
    if (url.indexOf('?') !== -1) {
      tokenKey = '&token=';
      ismini = '&ismini=1';
    }
    if (isRequireToken) { // 是否需要登錄的頁面
      if (token) {
        path = `/subPages/webView/index?weburl=${encodeURIComponent(`${host}#${url + tokenKey + token}${ismini}`)} `;
      } else {
// 需要登錄 有沒有token的情況 先跳轉(zhuǎn)登錄 然后 帶上url登陸后繼續(xù)執(zhí)行跳轉(zhuǎn)操作 又會繼續(xù)執(zhí)行toWebFun 函數(shù)
        Taro.navigateTo({
          url: `/subPages/login/index?redirectTo=${url}`,
        });
        return;
      }
    } else {
// 無需token
      path = `/subPages/webView/index?weburl=${encodeURIComponent(`${host}#${url}${ismini}`)}`;
    }
    TaroNavigate({
      url: path,
    });
  };
};

export const navigateToWeb = toWebFun();

在其他頁面就是使用navigateToWeb 跳轉(zhuǎn)H5頁面

H5頁面中提供一下方法回到小程序頁面及給小程序頁面?zhèn)髦?/p>

小程序和網(wǎng)頁之間的通信是單向的,即只能從網(wǎng)頁發(fā)送消息到小程序,不能從小程序發(fā)送消息到網(wǎng)頁。

// H5與小程序交互的方式

// 返回小程序首頁
wx.miniProgram.navigateTo({url: '/pages/home/index'})

// 給小程序傳遞參數(shù)
wx.miniProgram.postMessage({ data: 'foo' })
// 給小程序傳遞復(fù)雜參數(shù)
wx.miniProgram.postMessage({ data: {foo: 'bar'} }) 

// 小程序web-view 存儲H5傳回來的數(shù)據(jù)
// onMessage={(res) => {
//    this.setPostMessage(res.detail.data); // 存儲H5傳回來的數(shù)據(jù)
// }}

// 獲取當(dāng)前環(huán)境
wx.miniProgram.getEnv(function(res) { console.log(res.miniprogram) })  
 
// 小程序下的H5 去小程序的虛擬訂單頁
wx.miniProgram.navigateTo({url:`/subPages/virtualOrderList/virtualOrderList?type=coupon`});

小程序可以在跳轉(zhuǎn)之前在url攜帶一些參數(shù),或者直接通過后端緩存的方式 在小程序存儲緩存換取緩存id,拼接在url上,跳轉(zhuǎn)到H5之后通過緩存id獲取緩存數(shù)據(jù)

總結(jié)

到此這篇關(guān)于小程序webView實(shí)現(xiàn)小程序內(nèi)嵌H5頁面的文章就介紹到這了,更多相關(guān)小程序webView內(nèi)嵌H5頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • canvas實(shí)現(xiàn)刮刮卡效果

    canvas實(shí)現(xiàn)刮刮卡效果

    本文主要介紹了使用canvas實(shí)現(xiàn)刮刮卡效果的實(shí)例。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • 讓js彈出窗口居前顯示的實(shí)現(xiàn)方法

    讓js彈出窗口居前顯示的實(shí)現(xiàn)方法

    一般來說,顯示在最前面的窗口都是因為窗口被激活獲得焦點(diǎn),要使窗口永遠(yuǎn)顯示在最前面,可以人為的設(shè)置窗口在blur時立刻focus,或者用模式、無模式對話框?qū)崿F(xiàn)
    2013-07-07
  • Javascript中構(gòu)造函數(shù)要注意的一些坑

    Javascript中構(gòu)造函數(shù)要注意的一些坑

    JavaScript語言是一門面向?qū)ο蟮恼Z言,但JS中并沒有類的概念的。于是JavaScript采用構(gòu)造函數(shù)的方式來模擬類的效果,即我們通過函數(shù)來創(chuàng)建對象。這也證明了函數(shù)在JavaScript中具有非常重要的地位。本文主要介紹了Javascript中構(gòu)造函數(shù)的一些坑,需要的朋友可以參考。
    2017-01-01
  • JS 數(shù)組基本用法入門示例解析

    JS 數(shù)組基本用法入門示例解析

    這篇文章主要介紹了JS 數(shù)組基本用法,結(jié)合實(shí)例形式分析了JavaScript數(shù)組的定義、初始化、賦值、打印等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • JS實(shí)現(xiàn)點(diǎn)擊復(fù)選框變更DIV顯示狀態(tài)的示例代碼

    JS實(shí)現(xiàn)點(diǎn)擊復(fù)選框變更DIV顯示狀態(tài)的示例代碼

    下面小編就為大家分享一篇JS實(shí)現(xiàn)點(diǎn)擊復(fù)選框變更DIV顯示狀態(tài)的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • form+iframe解決跨域上傳文件的方法

    form+iframe解決跨域上傳文件的方法

    下面小編就為大家?guī)硪黄猣orm+iframe解決跨域上傳文件的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • javascript實(shí)用方法總結(jié)

    javascript實(shí)用方法總結(jié)

    本文這里給大家總結(jié)了一些常用的javascript方法,都是些短小精悍的小代碼,提高執(zhí)行效率,這里推薦給大家。
    2015-02-02
  • Auntion-TableSort javascript類文件

    Auntion-TableSort javascript類文件

    Auntion-TableSort javascript類文件...
    2007-11-11
  • Echarts如何自定義label標(biāo)簽的樣式(formatter,rich,添加圖標(biāo)等操作)

    Echarts如何自定義label標(biāo)簽的樣式(formatter,rich,添加圖標(biāo)等操作)

    通常情況下,echarts中對于圖像的設(shè)置是統(tǒng)一的,下面這篇文章主要給大家介紹了關(guān)于Echarts如何自定義label標(biāo)簽的樣式的相關(guān)資料,包括formatter,rich,添加圖標(biāo)等操作,需要的朋友可以參考下
    2023-02-02
  • 文字垂直滾動之javascript代碼

    文字垂直滾動之javascript代碼

    這篇文章主要應(yīng)用javascript代碼實(shí)現(xiàn)文字垂直滾動的效果,需要的朋友可以參考下
    2015-07-07

最新評論

景德镇市| 诸城市| 富宁县| 闵行区| 慈利县| 乌海市| 镇原县| 海淀区| 琼中| 屏东市| 恭城| 莆田市| 南投县| 衡山县| 宁陵县| 静海县| 佳木斯市| 新宾| 新安县| 旺苍县| 中江县| 沙雅县| 崇州市| 寿宁县| 汝阳县| 正定县| 两当县| 鱼台县| 老河口市| 沙坪坝区| 翁源县| 平谷区| 昌平区| 乡宁县| 镇沅| 博湖县| 精河县| 防城港市| 偃师市| 西乡县| 信丰县|