JS加载微信SDK—>跳转小程序的方法

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) {
	...// 一些代码逻辑
}
### 回答1: 可以使用微信JS-SDK中的wx.miniProgram.navigateTo方法跳转微信小程序。具体的js代码实现如下: ``` wx.miniProgram.navigateTo({ url: '/pages/index/index' }) ``` 其中,参数url为需要跳转小程序页面路径,可以根据实际情况进行修改。 ### 回答2: 要实现跳转微信小程序方法,可以使用微信开放平台提供的接口wx.navigateToMiniProgram。该接口接受一个对象作为参数,对象中包含要跳转小程序的appId以及附加的参数。 具体的代码如下: ```javascript function jumpToMiniProgram() { wx.navigateToMiniProgram({ appId: '要跳转小程序的appId', path: '要跳转小程序的路径', extraData: { // 可以传递一些额外的参数 }, success(res) { // 跳转成功时的回调函数 }, fail(err) { // 跳转失败时的回调函数 } }) } ``` 在调用jumpToMiniProgram函数时,将要跳转小程序的appId和路径作为参数传入即可。如果需要传递额外的参数,可以将它们添加到extraData属性中。 调用wx.navigateToMiniProgram后,微信客户端会打开跳转小程序,并加载指定的页面。 需要注意的是,为了保证微信客户端版本的兼容性,建议在使用wx.navigateToMiniProgram前先进行版本判断,判断微信客户端是否支持该接口。 ### 回答3: 要用JS编写一个跳转微信小程序方法,我们可以使用微信开放平台提供的JavaScript API:wx.navigateToMiniProgram()。 首先,我们需要在HTML文档中引入微信JS文件: ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ``` 然后,在JS代码中,我们可以调用wx.navigateToMiniProgram()方法来实现跳转微信小程序。这个方法接受一个对象作为参数,包含了跳转相关的配置信息。下面是一个简单的示例代码: ```javascript // 在微信环境下执行跳转到指定的小程序 if (typeof wx !== 'undefined') { wx.navigateToMiniProgram({ appId: '小程序的AppID', path: '小程序的页面路径', success: function () { console.log('跳转成功'); }, fail: function (err) { console.log('跳转失败:' + err); } }); } ``` 在这个例子中,我们通过指定小程序的AppID和页面路径来跳转到指定的小程序。如果跳转成功,将会在控制台输出"跳转成功",如果跳转失败,将会输出具体的错误信息。 需要注意的是,这段代码只会在微信环境中执行。在其他浏览器或环境下,wx对象将不存在,因此需要进行判断避免js报错。 以上就是使用JS编写一个跳转微信小程序的简单方法。当然,除了基本的跳转之外,还可以通过调用其他API来实现更多功能,比如获取用户信息、支付等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值