在微信小程序开发过程中,会需要跳转到外部链接,微信提供了 <web-view>组件供我们使用。

为减少重复代码,一般会将这个功能单独抽取为一个页面供大家使用:

<template>
<!--
通用 web-view
note:在iOS中,若存在JSSDK接口调用无响应的情况,可在<web-view/>的src后面加个#wechat_redirect解决
-->
<web-view :src="url"></web-view>
</template> <script>
export default {
data() {
return {
url: ''
}
},
onLoad(options) {
this.url = options.url
}
}
</script>

** 如果上述的 url 携带了参数,那么参数需要经过encodeURIComponent,否则微信 ios 版可能出现页面无法打开的bug。**

p.s.如果参数是一个对象,可以使用qs这个 npm 包将参数序列化一下。

或者用这个(抄的):

querystring.js

const stringify = obj => {
if (!obj) {
return '';
} else {
return Object.keys(obj)
.sort()
.map(key => {
let val = obj[key]; if (val === undefined) {
return '';
}
if (val === null) {
return encode(key);
} // NOTE: 如果需要传递数组,请自己和服务端商量好该如何处理
//
// if (Array.isArray(val)) {
// return val.slice().reduce((r, v) => {
// if (val2 === undefined) {
// return r;
// }
// return r.concat(encode(key) + '[]=' + encode(v));
// }, []).join('&');
// } return encode(key) + '=' + encode(val);
})
.filter(x => {
return x.length > 0;
})
.join('&');
}
}; // NOTE: 同样没处理数组
// 问题不是需不需要数组,而是以什么样的形式来传递数组
const parse = str => {
str = str
.trim()
.replace(/^[?#&]/, '')
.replace('/+/g', ' '); return str.split('&').reduce((r, s) => {
let i = s.indexOf('=');
let key = s.slice(0, i);
let val = i === -1 ? undefined : s.slice(i + 1); r[key] = val === undefined ? null : decode(val);
return r;
}, {});
}; function encode(value) {
return encodeURIComponent(value);
} function decode(value) {
return decodeURIComponent(value);
} export default {
stringify,
parse
};

微信小程序 web-view 的 url 带参问题的更多相关文章

  1. 原创:微信小程序+WEB使用JS实现注册【60s】倒计时功能

    1.效果图: 2.页面仅仅利用了JS的相关功能,包含:wxml.js.wxss 2.1wxml页面代码: <text>绑定手机</text> <form bindsubm ...

  2. 微信小程序——页面跳转及传参

    小程序页面跳转 微信小程序的页面跳转依然是以传统的请求转发和请求重定向为主,tabbar的存在,有TAB页面的跳转. 为了微信小程序的简介方便,规定页面路径只能是十层,应尽量避免过多的交互方式. 1. ...

  3. 微信小程序html(wxml)传参

    欢迎加入前端交流群交流知识:749539640 习惯了vue.angular用微信小程序有时候真感觉非人类..需要用data-xxx 先说下我们在vue.angular里事件传参 //html < ...

  4. 关于微信小程序获取view的动态高度填坑

    wx.createSelectorQuery().select('#box').boundingClientRect(function (rect) { width = rect.width heig ...

  5. 微信小程序:bindtap等事件传参

    事件是视图层到逻辑层的通讯方式. 事件可以将用户的行为反馈到逻辑层进行处理. 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数. 事件对象可以携带额外信息,如 id, data ...

  6. 微信小程序云开发-云存储-带图片的商品列表携带id跳转至商品详情

    一.商品列表页 1.wxml文件 在view中添加点击事件goToGoodDetail,绑定数据data-id <!-- 添加点击事件goToGoodDetail --> <view ...

  7. 微信小程序 -- scroll view

    效果图:横向滚动和纵向滚动 scroll view使用方法文档,前面已经介绍查找文档方法,此处不再赘述 一.横向滚动 创建一个页面scroll-nav 然后,在.wxml文件中排版 <!--水平 ...

  8. 【微信小程序】view顶部固定或底部固定 + scroll-view中的元素view也可以使用position:fixed;固定选中元素位置

    1.顶端固定核心代码如下: <view class="page__hd" style="position:fixed; top:0;width: 750rpx;&q ...

  9. 微信小程序将view动态填满全屏

    一.在app.js利用官方方法获取设备信息,将获取到的screenHeight.windowHeight度量单位统一由rpx换算为px 注:官方文档给出 [rpx换算px (屏幕宽度/750)  ][ ...

  10. 微信小程序页面跳转url如何传对象参数

    两步走 首先第一步:wx.navigateTo({ url:"XXX"+"&params="+ JSON.stringify(obj); }) 第二步获 ...

随机推荐

  1. php的pid文件指定用户

    比如pid文件指定www用户,首先得有这用户和用户组. 找到pathtophp-fpm.conf文件,修改里面得相关内容. 修改listen.owner=www listen.group=www us ...

  2. Linux查看某个端口的连接数

    一.查看哪些IP连接本机 netstat -an 二.查看TCP连接数 1)统计80端口连接数 netstat -nat | grep -i "80" | wc -l 2)统计ht ...

  3. 使用::befor和::after伪元素在网站中添加图标

    css3为了区分伪类和伪元素,伪元素采用双冒号写法. 常见伪类——:hover,:link,:active,:target,:not(),:focus. 常见伪元素——::first-letter,: ...

  4. 你不知道的JavaScript中,读书笔记

    七种内置类型 null, undefined, boolean, number, string, object, symbol typeof null === 'object' // true nul ...

  5. jstl标准标签库 其他标签

    url操作标签 import 将另一个页面的内容引入到这个页面上来, 与include指令的区别: 这个标签可以引入其他项目中甚至网络上的资源 <c:import url="被导入的路 ...

  6. AC自动机解题记录

    1.HDU 2222 Keywords Search 模板题 #include <bits/stdc++.h> #define fir first #define sec second # ...

  7. 天天向上的力量 III

    描述 一年365天,以第1天的能力值为基数,记为1.0. 当好好学习时,能力值相比前一天提高N‰:当没有学习时,能力值相比前一天下降N‰. 每天努力或放任,一年下来的能力值相差多少呢?其中,N的取值范 ...

  8. Python练习-高阶函数-2018.12.03

    1.函数式编程的概念 在计算机的层次上,CPU执行的是加减乘除的指令代码,以及各种条件判断和跳转指令,所以,汇编语言是最贴近计算机的语言. 而计算则指数学意义上的计算,越是抽象的计算,离计算机硬件越远 ...

  9. VUE项目小试牛刀

    首先安装webstorm:http://www.jetbrains.com/webstorm/  (推荐) 再安装node.js:https://nodejs.org/en/download/  (必 ...

  10. [leetcode]20. Valid Parentheses有效括号序列

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...