demo图, h5跳转小程序

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<link rel="stylesheet" href="./css/common.css">
<title>微信公众号h5页面跳转小程序</title>
<style>
html,body{
overflow: scroll;
-webkit-overflow-scrolling: scroll;
overflow-scrolling: scroll;
background:rgba(246,246,246,1);
}
#app{
width: 100%;
height: 100%;
text-align: center;
}
img{
width: 100%;
}
</style>
</head>
<body>
<div id="app"> <wx-open-launch-weapp
id="launch-btn"
username="gh_69xxxxxx"
path="pages/index/index.html"
@error="handleErrorFn"
@launch="handleLaunchFn"
>
<!-- <template>
<style>.btn { padding: 12px }</style>
<button class="btn">打开小程序</button>
</template> -->
<!-- <img src="./img/apple.png" alt=""> -->
<script type="text/wxtag-template">
<img style="width:100%;" class="btn" src="https://ixxxxx/o_1epg43d4p1ldu1umolp61f4t17s5f.png" alt="">
     
              <div style="width:88%;margin:9px auto">
                          <div style="font-family: PingFangSC-Semibold, PingFang SC;font-weight: 600;width:100%;box-sizing: border-box;border-radius: 2px;line-height:40px;text-align:center;background:#FE5A38;color:#fff;font-size:18px">去购买</div>   
                      </div>
                </script>
</wx-open-launch-weapp> </div>
<script src="./js/vue.js"></script>
<script src="./js/jquery-2.1.1.min.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> <script>
var app = new Vue({
el: '#app',
data: {
dataList:null
},
methods: {
handleErrorFn(e){
console.log('fail', e.detail);
alert('vuefail')
}, handleLaunchFn(e){
console.log('success');
alert('vuesuccess')
},
//获取数据 卡片详情
getData(){
var tagUrl = location.href;
tagUrl = encodeURIComponent(tagUrl);
// console.log(tagUrl)
            
            // 自己后台接口 传当前页面路径参数, 获取 config配置参数
$.get("https://xxxxxxxxxgetWxParams?url=" + tagUrl, function(res) {
if (res.error == '00') {
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: 'wx22wxxxxxx', // 必填,()我们这里填的服务号)公众号的唯一标识
timestamp: res.result.timestamp, // 必填,生成签名的时间戳
nonceStr: res.result.nonceStr, // 必填,生成签名的随机串
signature: res.result.signature, // 必填,签名
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage',
"checkJsApi"
],// 必填,需要使用的JS接口列表
openTagList: ["wx-open-launch-weapp"]
});
// config之后会自动调用ready方法
wx.ready(function() {
// 验证接口是否注册完成
wx.checkJsApi({
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage',
'wx-open-launch-weapp'
],
success: function(res) {
console.log("验证接口是否注册完成-成功");
}
});
// 微信朋友圈
wx.onMenuShareTimeline({
title: param.title, // 分享标题
desc: param.content, // 分享描述
link: param.url, // 分享链接
imgUrl: param.pic, // 分享图标
type: 'link', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function() {
// 用户确认分享后执行的回调函数
// alert('已分享');
},
cancel: function() {
// 用户取消分享后执行的回调函数
console.log('已取消分享')
}
}); //获取“分享给朋友”
wx.onMenuShareAppMessage({
title: param.title, // 分享标题
desc: param.content, // 分享描述
link: param.url, // 分享链接
imgUrl: param.pic, // 分享图标
type: 'link', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function() {
// 用户确认分享后执行的回调函数
// alert('已分享');
},
cancel: function() {
// 用户取消分享后执行的回调函数
// alert('已取消');
console.log('已取消分享')
}
})
});
wx.error(function(res) {
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
}
})
}, },
created(){ },
mounted (){
this.getData()
}
})
</script>
</body>
</html>

1.前提, 微信公众后台   服务号!!  配置了js安全域名  和 ip白名单!!!!!

2.真机测试  才会显示!!!!!!!!

3.用图片的话,要线上的

4.  username="gh_69xxxxxx"     小程序原始id   不是小程序wx开头的id

5.  path="pages/index/index.html"   后面要加.html

6.   openTagList: ["wx-open-launch-weapp"]    config配置参数必须填这个开放接口

7.        <!-- <template>

                    <style>.btn { padding: 12px }</style>
<button class="btn">打开小程序</button>
</template> -->
          //template不支持的话 就用下面的, 样式要行内样式
<script type="text/wxtag-template">
<img style="width:100%;" class="btn" src="https://ixxxxx/o_1epg43d4p1ldu1umolp61f4t17s5f.png" alt="">
            <p>跳转小程序</p>
</script>

除了这点外还有以下几个坑点


  1. 不能用js来模拟点击,有了局限性
  2. 样式无法写在外面中,只能在script标签内内链写或者行内样式
  3. 无论是内链还是行内 都不支持rem
  4. 不会继承样式
  5. 如果开发标签内需要使用图片,不能用本地图片,得用外网可以访问的图片,要不然会不显示


官方文档: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html

最后给你们福利:   微信版本要求为:7.0.12及以上。 系统版本要求为:iOS 10.3及以上、Android 5.0及以上   ,  不然 显示不了<wx-open-launch-weapp>

// 小程序跳转要求
isok(){
// 微信版本要求为:7.0.12及以上。 系统版本要求为:iOS 10.3及以上、Android 5.0及以上。
var wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i) ;
console.log(wechatInfo[1])
// alert(wechatInfo[1])
// Android 5.0及以上
var ua = navigator.userAgent.toLowerCase();
console.log(ua); if( !wechatInfo ) {
// alert("仅支持微信") ;
// this.$toast.fail('仅支持微信')
} else if ( wechatInfo[1] < "7.0.12" ) {
// alert("微信版本要求7.0.12及以上版本") ;
this.$toast.fail({
duration: 8000,
content: '微信版本要求7.0.12及以上版本'
}); // this.$toast('微信版本要求7.0.12及以上版本')
}else if (/android/i.test(navigator.userAgent)) {
var test = /android\s([\w.]+)/;//IE
var match = test.exec(ua);
console.log(match);
document.write("This is Android "+ match[1] +" browser."); //这是Android平台下浏览器
var version = match[1].split(".")[0];
if(version < 5){
// alert('Android系统要求5.0及以上版本');
// this.$toast('Android系统要求5.0及以上版本')
this.$toast.fail({
duration: 8000,
content: 'Android系统要求5.0及以上版本'
});
}
}else if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
var test = /os\s([\w_]+)/;//IE
var match = test.exec(ua);
// var version = match[1].split("_")[0];
var version = match[1].split("_")[0]+'.'+match[1].split("_")[1]
console.log(version)
if(version < 10.4){
// alert('ios系统要求10.3及以上版本');
// this.$toast('ios系统要求10.3及以上版本')
this.$toast.fail({
duration: 8000,
content: 'ios系统要求10.3及以上版本'
});
}
// document.write("This is iOS " + version + " browser."); //这是iOS平台下浏览器
} }
 更多参开链接:   https://blog.csdn.net/weixin_45532305/article/details/109491862

<wx-open-launch-weapp>详解的更多相关文章

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">的含义

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/x ...

  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    关于网页中第一行<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">详解

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"的作用

    为页面添加正确的DOCTYPE 很多设计师和开发者都不知道什么是DOCTYPE,DOCTYPE有什么用.DOCTYPE是document type的简写.主要用来说明你用的XHTML或者HTML是什么 ...

  5. Vue2.0史上最全入坑教程(中)—— 脚手架代码详解

    书接上文我们说道,如何利用脚手架(vue-cli)构建一个vue项目,本回书我们一起来学习分析下代码. 回顾下创建后的项目目录:   说明:在*.vue文件,template标签里写html代码,且t ...

  6. Windows7 QT5.6.0(64位)使用mysql(64位)环境搭建详解

    1 说明 使用环境为:Windows7 VS2015 QT5.6.0(64位),MYSQL 5.7.13(64位). 网上各种错误.模糊.抽象的资料,配置环境花了半天,痛定思痛,总结出来,方便后来人. ...

  7. IDEA里运行代码时出现Error:scalac: error while loading JUnit4, Scala signature JUnit4 has wrong version expected: 5.0 found: 4.1 in JUnit4.class错误的解决办法(图文详解)

    不多说,直接上干货!  问题详情 当出现这类错误时是由于版本不匹配造成的 Information:// : - Compilation completed with errors and warnin ...

  8. 安装mysql8.0.11及修改root密码、连接navicat for mysql的思路详解

    1.1. 下载: 官网下载zip包,我下载的是64位的: 下载地址:https://dev.mysql.com/downloads/mysql/ 下载zip的包: 下载后解压:(解压在哪个盘都可以的) ...

  9. XHTML 1.0 的三种 XML 文档类型 DOCTYPE

    XHTML 1.0 的三种 XML 文档类型 XHTML 1.0 规定了三种 XML 文档类型 XHTML 1.0 Strict <!DOCTYPE html PUBLIC "-//W ...

  10. DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义

    DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义 今天看到一篇CSS应用的一个友好搜索,我按网页上的代码复制.粘贴后预览时总达不到效果,而直接拷贝他的实例却能达到效果, ...

随机推荐

  1. Triple Shift

    来源:Atcoder ARC 136 B - Triple Shift (atcoder.jp) 题解:这道题我们不可能去硬模拟(大多数这种题都不能这样去模拟的),然后我们就要去发现特性, 发现把 a ...

  2. ElasticSearch 文档(document)内部机制详解

    1.数据路由 1.1 文档存储怎么路由到相应分片? 一个文档,最终会落在主分片的一个分片上,到底应该在哪一个分片?这就是数据路由. 1.2 路由算法 shard = hash(routing) % n ...

  3. php 23种设计模型 - 建造者模式

    建造者模式(Builder) 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 一个 Bu ...

  4. 浅识 npm 与 cnpm

    npm是什么? Node Package(包) Manager(管理器) 的简称. 在 GitHub 还没有兴起的年代,前端是通过网址来共享代码.比如你想使用 jQuery,那么你点击 jQuery ...

  5. social network 中Clustering Coefficient 相关笔记2

    breath_first search 改变了原图的连接情况.

  6. Block对变量的引用

    如果在 Block 内部使用外部的变量,Block 会持有这个变量.下面来看几中特殊的情况,看 Block 对变量的持有情况如何. typeof @interface X : NSObject @pr ...

  7. Java基础——ArrayList

    Java基础--ArrayList 作用:提供一个可变长度的集合,底层实际上是一个可变长度的数组 格式:ArrayList <E> arr=new ArrayList<>(); ...

  8. MyEclipse 05_连接mysql数据库进行增删改查

    例子: 1.在数据库中建立如下表 2. 在MyEclipse里按本主博客文MyEclipse 03_jdbc连接数据库,注意数据库名要一致  运行后在Navicat里如下: 代码如下: package ...

  9. 5月16日 python学习总结 DBUtils模块、orm 和 cookie、session、token

    一.DBUtils模块 介绍 The DBUtils suite is realized as a Python package containing two subsets of modules, ...

  10. 配置Openfiler做ISCS实验

    在VMware workstation中安装openfiler(linux底层)   系统安装 选择redhat6,64bit   分配30G 2.   3.. 4.5.               ...