关于h5与app的交互(有App直接打开没有App跳转下载商城)

完整代码

<template>

  <div class="share-page">

    <div>

      <div class="share-row1">

        <div class="share-img">

          <img

            :src="shareList.banners[0].imageUrl"

            alt=""

            width="100%"

            height="100%"

          />

        </div>

        <div class="share-price">活动价<span>¥69</span></div>

        <div class="share-yprice">原价<span>¥99</span></div>

        <div>商品描述:{{ shareList.description }}</div>

      </div>

      <div class="share-row1">

        <div class="share-title">拼团流程</div>

        <div class="grid">

          <div class="line-row">

            <div class="share-tuan">

              <div class="share-row1-img"></div>

              <div class="share-row1-title">发起拼团</div>

            </div>

            <div class="row1-line-img">

               <img src="../../../img/share-tuan.png" width="100%" height="100%" alt="">

            </div>

            <div class="share-tuan">

              <div class="share-row1-img"></div>

              <div class="share-row1-title">邀请好友</div>

            </div>

            <div class="row1-line-img">

              <img src="../../../img/share-tuan.png" width="100%" height="100%" alt="">

            </div>

            <div class="share-tuan">

              <div class="share-row1-img"></div>

              <div class="share-row1-title">拼团成功</div>

            </div>

          </div>

        </div>

      </div>

      <div class="share-row1">

        <div class="grid2">

          <div class="share-title">参团人员</div>

          <div class="share-title1">还差3人成团</div>

        </div>

        <div class="grid3">

          <div class="share-row2-img"></div>

          <div class="share-title1">135*******</div>

          <div class="share-title1">2022-08-24</div>

        </div>

        <div class="grid3">

          <div class="share-row2-img"></div>

          <div class="share-title1">135*******</div>

          <div class="share-title1">2022-08-24</div>

        </div>

      </div>

      <div class="share-row1">

        <div class="share-title">活动规则</div>

        <div class="share-text">

          活动规则文案活动规则文案活动规则

          文案活动规则文案活动规则文案活动规则文案活动规则

          文案活动规则文案活动规则文案活动规则文案活动规则

          文案活动规则文案活动规则文案活动规则文案活动规则

          文案活动规则文案活动规则文案活动规则文案活动规则

          文案活动规则文案活动规则文案活动规则文案活动规则

          文案活动规则文案活动规则文案活动规则文案活动规则

          文案活动规则文案活动规则文案活动规则文案活动规则 文案活动规则文案

        </div>

      </div>

      <div class="share-row1">

        <div class="share-title">活动详情</div>

      </div>

      <div class="page-top">

        <el-button type="primary" @click="JoinTogether()" class="share-button"

          >我要加入</el-button

        >

      </div>

    </div>

  </div>

</template>

<script>

export default {

  data() {

    return {

      shareList: {},

      spu: 962735,

      shareIcon:'../../../img/share-tuan.png'

    }

  },

  async mounted() {

    const data = {

      currentPage: 1,

      pageSize: 12,

      saleStatusList: 3, // 销售中

      saleStatus: 99

    }

    // const res = await this.$api.GET_SPU_LIST(data)

    const res = await this.$api.GET_SPU_DETAIL(this.spu)

    this.shareList = res

    console.log(res, 9090)

  },

  methods: {

    JoinTogether() {

      var u = navigator.userAgent,

        app = navigator.appVersion

      var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1

      var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)

      if (isAndroid) {

        alert('我是安卓')

        this.android()

      }

      if (isIOS) {

        alert('我是苹果')

        // this.OpentProduct = true

        // this.isShowCard = true

        this.appStore()

      }

    },

    android() {

      var _clickTime = new Date().getTime()

      window.location.href = 'zhihu://' /***打开app的协议,有安卓同事提供***/

      var _count = 0,

        intHandle

      intHandle = setInterval(function() {

        _count++

        var elsTime = new Date().getTime() - _clickTime

        if (_count >= 100 || elsTime > 5000) {

          clearInterval(intHandle)

          //检查app是否打开

          if (document.hidden || document.webkitHidden) {

            window.location.href = 'zhihu://'

            alert('打开了')

            window.close()

            // return;

          } else {

            window.location.href =

              'https://a.app.qq.com/o/simple.jsp?pkgname=cn.ch.neighbour' //下载链接

          }

        }

      }, 20)

    },

    //IOS

    appStore() {

      var clickTime = +new Date()

      var ifr = document.createElement('iframe')

      ifr.src = '' //ios协议

      ifr.style.display = 'none'

      document.body.appendChild(ifr)

      //启动间隔20ms 运行定时器

      var count = 0

      var intHandle = ''

      intHandle = setInterval(function() {

        count++

        var elsTime = +new Date() - clickTime

        if (count >= 100 || elsTime > 300) {

          clearInterval(intHandle)

          document.body.removeChild(ifr)

          // 检查App是否打开

          if (document.hidden || document.webkitHidden) {

            //打开了

            ifr.src = '' //ios协议

            window.close()

          } else {

            //没打开

            alert('没有APP')

            window.open('https://8ec4cbe.umindex.com')

            // window.location.href = 'itms-apps://8ec4cbe.umindex.com'

          }

        }

      }, 20)

    },

    clickSet() {

      this.isShowCard = false

      this.$router.push('XXX') //跳转到指定页面

    },

    closeCard() {

      this.isShowCard = false

    }

  }

}

</script>

<style lang="scss">

.iframe {

  position: absolute;

  left: 0;

  right: 0;

  top: 0;

  bottom: 0;

  width: 100%;

  height: 100%;

  background: #fff;

  overflow-y: hidden;

}

.page-top {

  z-index: 2;

  width: 100%;

  display: flex;

  justify-content: center;

  align-items: center;

  margin-bottom: 60px;

}

.share-button {

  width: 100%;

}

.share-page {

  width: 100%;

  height: 100%;

  margin: auto;

  background: rgb(238, 237, 237);

}

.share-img {

  width: 98%;

  height: 200px;

  margin: auto;

}

.share-price {

  font-size: 0.8rem;

  span {

    color: red;

    font-display: 500;

    font-size: 1.2rem;

  }

}

.share-yprice {

  font-size: 0.8rem;

  color: #666;

  span {

    color: red;

  }

}

.share-row1 {

  background: #fff;

  margin: auto;

  padding: 8px;

  border-radius: 3px;

  margin-bottom: 5px;

}

.share-tuan {

  width: 80px;

}

.share-row1-img {

  width: 3.5rem;

  height: 3.5rem;

  border-radius: 3rem;

  background: rgb(194, 192, 192);

  margin: auto;

}

.share-row2-img {

  width: 3.5rem;

  height: 3.5rem;

  border-radius: 3rem;

  background: rgb(194, 192, 192);

}

.share-row1-title {

  margin-left: 5px;

}

.share-title {

  font-size: 1.2rem;

  font-display: 500;

  font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;

  line-height: 40px;

}

.share-title1 {

  font-size: 0.9rem;

  line-height: 40px;

}

.grid {

  display: grid;

  grid-template-columns: repeat(5, 1fr);

}

.line-row {

  display: grid;

  grid-template-columns: repeat(5, 1fr);

  width: 300px;

}

.row1-line-img {

  width: 3.5rem;

  height: 3rem;

}

.grid2 {

  display: grid;

  grid-template-columns: repeat(2, 1fr);

}

.grid3 {

  display: grid;

  grid-template-columns: repeat(3, 1fr);

  margin-bottom: 10px;

}

.mask {

  background: rgba(0, 0, 0, 0.5);

  position: fixed;

  margin: 0, 0, 0, 0;

  z-index: 10;

}

.advertise {

  position: fixed;

  width: 5.2rem;

  height: 7rem;

  top: 3.31rem;

  left: 50%;

  transform: translate(-50%, 0%); // 控制居中显示

  z-index: 20;

}

.img_set {

  position: absolute;

  width: 2.4rem;

  height: 0.64rem;

  top: 5rem;

  left: 50%;

  z-index: 40;

  transform: translate(-50%, 0%);

}

.shut {

  position: absolute;

  width: 0.42rem;

  height: 0.42rem;

  bottom: 0;

  left: 50%;

  transform: translateX(-50%);

  background: rgb(195, 32, 32);

  background-size: 42px 42px;

}

</style>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容