import loadScript from './loader.js'
const SDK_URL = '//res.wx.qq.com/open/js/jweixin-1.3.2.js' //小程式web-view推薦使用1.3.2版本
let loaded = 'init'
// 加載微信sdk
export function loadWechatSDK() {
if (loaded === 'loaded') {
return Promise.resolve()
} else if(loaded === 'init') {
loaded = 'loading'
return loadScript(SDK_URL, { crossOrigin: false }).then(() => {
loaded = 'loaded'
})
}
}
// window.__wxjs_environment === "miniprogram"
export function jumpMiniProgram(url) {
console.log(window.wx);
if (window.wx) {
wx.miniProgram.navigateTo({ url });
} else {
loadWechatSDK().then(() => {
wx.miniProgram.navigateTo({ url });
});
}
}
// h5跳轉到中間頁的方式
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();
// location.href = 'https://page.xiaojukeji.com/package/wxmp-middleware/index.html?redirect=weixin%3A%2F%2Fdl%2Fbusiness%2F%3Ft%3DLAcT5JdAxPe'
}
}
// 不允許導流就還走原來的函數邏輯
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) {
...// 一些代碼邏輯
}