import loadScript from './loader.js'
const SDK_URL = '//res.wx.qq.com/open/js/jweixin-1.3.2.js'
let loaded = 'init'
export function loadWechatSDK() {
if (loaded === 'loaded') {
return Promise.resolve()
} else if(loaded === 'init') {
loaded = 'loading'
return loadScript(SDK_URL, { crossOrigin: false }).then(() => {
loaded = 'loaded'
})
}
}
export function jumpMiniProgram(url) {
console.log(window.wx);
if (window.wx) {
wx.miniProgram.navigateTo({ url });
} else {
loadWechatSDK().then(() => {
wx.miniProgram.navigateTo({ url });
});
}
}
export const jumpToMediumPage = (fn,hasParameter) => {
console.log('href',window.location.href)
let newPath = `${window.location.href}`
console.log('newPath',newPath);
let splitURL = newPath.split("?")[1].split("&");
console.log(splitURL);
for(var i=0;i<splitURL.length;i++){
var searchkey="";
if(splitURL[i].indexOf("stream=")!=-1){
searchkey= splitURL[i].split("stream=")[1];
console.log("stream",searchkey);
}
}
if(searchkey) {
console.log("允许导流");
if (window.__wxjs_environment === "miniprogram") {
let url = "/pages/index/index?menuid=gongjiao67";
console.log(url);
jumpMiniProgram(url);
}
else {
console.log("不是小程序环境下");
if(hasParameter) fn(hasParameter);
else fn();
}
}
else {
console.log("不允许导流");
console.log("fn",fn,hasParameter);
if(hasParameter) fn(hasParameter);
else fn();
}
}
代码改动程度不大,直接将原来的函数逻辑作为参数传入新方法,不改变原有函数逻辑,在jumpToMediumPage中走判断,满足条件走jumpToMediumPage的内部代码,不满足条件的直接还走原来的fn
无参传入函数
clickSearch() {
jumpToMediumPage(this.clickSearchDefault.bind(this))
},
clickSearchDefault(){
...
}
有参数传入
handleStationExpand(param) {
jumpToMediumPage(this.handleStationExpandDefault.bind(this),param);
},
handleStationExpandDefault(param) {
...
}