免费国产欧美国日产_少妇AV一区二区三区无码_蜜桃精品av无码喷奶水小说_jk18禁网站视频_精产国品一二三级产品区别_被夫の上司に犯波多野结衣_78m成人手机免费看_最爽最刺激18禁视频_偷偷色噜狠狠狠狠的777米奇

易優(yōu)GEO 重磅上線 ~ 一站式GEO優(yōu)化工具,讓豆包、文心一言、DeepSeek 在回答中主動推薦你的品牌,搶占AI流量入口!  點(diǎn)擊查看

小程序模板網(wǎng)

淺談小程序內(nèi)嵌網(wǎng)頁及內(nèi)嵌網(wǎng)頁跳轉(zhuǎn)分享實(shí)現(xiàn)

發(fā)布時間:2018-04-25 11:08 所屬欄目:小程序開發(fā)教程

上個月,小程序開發(fā)內(nèi)嵌web頁面的功能,這個對于很多微信開發(fā)者都是個重大消息。最近兩天,筆者項(xiàng)目中有這樣一個需求,支持小程序內(nèi)嵌網(wǎng)頁,并且在內(nèi)嵌網(wǎng)頁中多次跳轉(zhuǎn),分享后,點(diǎn)開還是在跳轉(zhuǎn)之后的網(wǎng)頁。對于這樣一個新技術(shù),還是充滿好奇,既然老大說了要做,那就嘗試去做唄。

首先,當(dāng)然是參考微信小程序的api。

<web-view src="https://mp.weixin.qq.com/">web-view>

其實(shí)使用起來特別簡單,只需在頁面中放入這樣一個標(biāo)簽即可,其中src一定是要在小程序管理中心配置過的。特別注意一下,web-view會占滿整個頁面,不管這個頁面有什么其它的東西,都不會展示出來。

好了。有了這個可以開始進(jìn)入需求實(shí)現(xiàn)的階段了。對于分享功能,做過小程序開發(fā)的都不會陌生,在需要被分享的頁面js中加入onShareAppMessage這樣一個事件即可。

在 Page 中定義 onShareAppMessage 函數(shù),設(shè)置該頁面的轉(zhuǎn)發(fā)信息。

只有定義了此事件處理函數(shù),右上角菜單才會顯示 “轉(zhuǎn)發(fā)” 按鈕

用戶點(diǎn)擊轉(zhuǎn)發(fā)按鈕的時候會調(diào)用

此事件需要 return 一個 Object,用于自定義轉(zhuǎn)發(fā)內(nèi)容

示例代碼如下:

Page({
  onShareAppMessage: function (res) {
    if (res.from === 'button') {
      // 來自頁面內(nèi)轉(zhuǎn)發(fā)按鈕
      console.log(res.target)
    }
    return {
      title: '自定義轉(zhuǎn)發(fā)標(biāo)題',
      path: '/page/user?id=123',
      success: function(res) {
        // 轉(zhuǎn)發(fā)成功
      },
      fail: function(res) {
        // 轉(zhuǎn)發(fā)失敗
      }
    }
  }
})

但是存在web-view時,onShareAppMessage回調(diào)函數(shù)參數(shù)res中還會多一個webViewUrl

Page({
  onShareAppMessage(options) {
    console.log(options.webViewUrl)
  }
})

看了這么多api,心里也有數(shù)了,就開始愉快的擼代碼了。很快,內(nèi)嵌網(wǎng)頁分享的功能就是實(shí)現(xiàn)出來了。

onShareAppMessage(options) {
      var that = this
      var return_url = options.webViewUrl
      return {
        title: that.data.title,
        path: return_url,
        success: function (res) {
          that.web_url = return_url
          // 轉(zhuǎn)發(fā)成功
          wx.showToast({
            title: "轉(zhuǎn)發(fā)成功",
            icon: 'success',
            duration: 2000
          })

        },
        fail: function (res) {
          // 轉(zhuǎn)發(fā)失敗
        }
      }
    },

就在感嘆自己是多么牛x,一下子就搞出來的時候,發(fā)現(xiàn)離需求還差一點(diǎn)。需要實(shí)現(xiàn)內(nèi)嵌網(wǎng)頁內(nèi)多次跳轉(zhuǎn)分享的功能,這就需要自己想辦法了。在小程序分享中又不能保持狀態(tài),這個得去記錄分享時網(wǎng)頁的路徑。其實(shí)有點(diǎn)開發(fā)經(jīng)驗(yàn)的都能想到這個辦法,那就是使用?在url后記錄下來,這樣在其它用戶打開轉(zhuǎn)發(fā)小程序的時候,取出其中的參數(shù),將web-view中的src替換成這個就行了。話不多說,直接上代碼。

Page({
    web_url:"",
    data: {
      title: '測試內(nèi)嵌分享',
      url:'',
      web_src:''
    },
    onShareAppMessage(options) {
      var that = this
      var return_url = options.webViewUrl
      var path = '/page/test/test?return_url=' + encodeURIComponent(return_url)
      console.log(path, options)
      return {
        title: that.data.title,
        path: path,
        success: function (res) {
          that.web_url = return_url
          // 轉(zhuǎn)發(fā)成功
          wx.showToast({
            title: "轉(zhuǎn)發(fā)成功",
            icon: 'success',
            duration: 2000
          })
        },
        fail: function (res) {
          // 轉(zhuǎn)發(fā)失敗
        }
      }
    },
    onLoad: function () {
        var pages=getCurrentPages();
        var currentPage = pages[pages.length - 1]; 
        var web_src = decodeURIComponent(currentPage.options.return_url ||
        encodeURIComponent("你的內(nèi)嵌網(wǎng)頁網(wǎng)址"))
        this.web_url = web_src
        this.setData({
          web_src: web_src
        }, function () {

        });

    }
})

寫到這里,終于大功告成了。

但是!?。?/p>

測試出問題了?。?!分享后跳不到想要的頁面?。。?/p>

找了n小時的bug,也看不出上面代碼思路和實(shí)現(xiàn)有何問題。由于此項(xiàng)技術(shù)也剛發(fā)布不久,市面上幾乎沒有可以參考的文章,只能自己硬著頭皮找。

找啊找,終于在今天早上找到了這個坑。

由于內(nèi)嵌網(wǎng)頁是單頁面應(yīng)用,在手機(jī)上測試的時候webViewUrl的獲取每次都會出現(xiàn)問題,只有換成一般的多頁面應(yīng)用,這個問題才不會發(fā)現(xiàn)。

也不知道這是不是個微信的bug,總之需求實(shí)現(xiàn)了,還是很開心的。

覺得筆者寫得不錯,可以點(diǎn)個贊噠?。。?/p>

如果此文中有不對的地方,歡迎大家指正交流?。?!


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.szcjxy.com/wxmini/doc/course/24073.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢: 點(diǎn)擊咨詢
在線客服