处理小程序的webview的url的常用方法:
常用方法1:
替换url某个参数的,方法如下:
/**
* 替换和添加url中某个参数,
* arg:需要替换和添加的参数名
* val:需要替换和添加的参数值
*/
function changeUrlArg(url, arg, val) {
url = decodeURIComponent(url)
try {
//判断是否在末尾加了wechat_redirect,如果有则去掉
if (url.indexOf('#wechat_redirect') > 0) {
url = url.split('#wechat_redirect')[0]
}
//判断url是否有参数
if (url.indexOf("?") != -1) {
var strs1 = url.split("?");
//判断url的?后面参数是否为空
if (strs1[1]) {
//url的地址
url = strs1[0] + '?'
//将url的参数进行拆分
var strs2 = strs1[1].split("&"),
tag = false; //定义标识
//通过for循环去查找替换的或加入的参数
for (var i = 0; i < strs2.length; i++) {
//判断当前参数是否是需要替换的参数
if (strs2[i].indexOf(arg) == 0) {
//将需要替换的参数拆分成key-value的形式
var strs3 = strs2[i].split("=");
//从新组装需要替换的参数值
strs2[i] = strs3[0] + '=' + val
//用标识标记已经找到了需要替换的参数
tag = true
}
//在处第一个参数外的其他不为空的参数加入参数分割符&
if (i != 0 && strs2[i]) {
strs2[i] = '&' + strs2[i]
}
//从新拼装url
url = url + strs2[i]
}
//如果没有找到替换的参数,则直接在后面加上该参数和值
if (!tag) {
url = url + '&' + arg + val
}
} else {
//如果?号后的参数为空则直接将参数添加到后面
url = url + arg + val
}
} else {
//如果没有参数则把参数直接添加到后面
url = url + '?' + arg + val
}
if (app.data.refreshWebView){
app.data.refreshWebView = false
url = url + '?__reftime=' + new Date().getTime()
}
//地址后面补全#wechat_redirect
url = url + '#wechat_redirect'
return url
} catch (e) {
console.log(e)
return url
}
}
常用方法2:
在小程序中获取webview地址的某个个参数,方法如下:
/**
* 拦截获取url的某个参数值
* url:需要拦截的地址
* arg:需要拦截的参数
* return:返回拦截的参数值
*/
function interceptParameter(url, arg) {
//定义缓存参数值的变量,默认空值
var value = ''
//判断url是否为空,且是否包含拦截的参数
if (url && url.indexOf(arg) >= 0) {
//判断是否在末尾加了wechat_redirect,如果有则去掉
if (url.indexOf('#wechat_redirect') > 0) {
url = url.split('#wechat_redirect')[0]
}
//拆分基础地址和参数
var strs = url.split("?");
if (strs.length > 1) {
//将参数拆分开来
var paramsArr = strs[1].split('&')
for (var i = 0; i < paramsArr.length; i++) {
//判断当前参数是否是我们要拦截的参数
if (paramsArr[i].indexOf(arg) == 0) {
var arr = paramsArr[i].split('=')
//判断当前参数是否为空
if (arr.length == 2) {
value = arr[1]
console.log(value)
break
}
}
}
}
}
return value
}