微信小程序嵌入Jquery Mobile网页

作者: jie 分类: 小程序 发布时间: 2023-06-10 17:54

之前用Jquery Mobile开发了微信公众号,业务逻辑都开发完成,支付和分享功能都还不错,但网页的安全还是不太令人满意。 用户只要复制链接(url)到电脑的浏览器上,查看网页元素,网页HTML和JS代码都暴露了, 辛辛苦苦的设计大白于天下;如果遇到黑客稍加修改,服务器数据就可能被抓取或被破坏,数据安全受到严重威胁。

微信小程序web-view的出现,很好解决上述弊端。把Jquery Mobile开发的网页url赋值到web-view的src属性即可,用户看不到url,也没法复制url, 也看不到页面HTML和JS代码。 而且随着网络速度加快, Jquery Mobile页面在微信小程序的速度表现不逊色于原生小程序。把小程序分享到桌面就与原生APP差不多,免去开发原生APP的重复工作,还适用于Android,苹果,鸿蒙,确实是事半功倍。

(1)小程序web-view设置url

<!-- wxml -->
<web-view src="{{url}}" ></web-view>
//js:
this.setData({
        url: 'https://xxx.com/mobile/index.html?openid=xxxx'
});

(2)分享功能代码片段:   

//jquer-mobile页面 JS调用小程序分享页面:
 
wx.miniProgram.navigateTo({ url: '../share/share?title=xxx&img=xxx'});
<!-- 小程序wxml代码: -->
<button open-type='share' >分享</button>

(3)支付功能代码片段:   

//jquer-mobile页面  JS调用小程序支付页面:
wx.miniProgram.navigateTo({ url: '../pay/pay?timestamp=xxxx&nonceStr=xxx&prepay_id=xxx&paySign='});
//小程序支付页面JS代码:
wx.requestPayment({
	'timeStamp': unescape(option.timeStamp),
	'nonceStr': unescape(option.nonceStr),
	'package': 'prepay_id=' + unescape(option.package),
	'signType': 'MD5',
	'paySign': unescape(option.paySign),
	'success': function(res) {
		ths.setData({
			vPayStaturs: "微信支付成功!正返回订单..."
		})
		console.log(res);
		ths.returnWeb2('success');
	},
	'fail': function(res) {
		ths.setData({
			vPayStaturs: "微信支付失败!" + res.errMsg
		})
		console.log(res);
	},
	complete: function(res) {
		// complete
		console.log(res);
	}
});

(4)联系客服

//jquer-mobile页面  JS调用小程序联系客服页面:
 
wx.miniProgram.navigateTo({ url: '../contact/contact?aa=xxx'}); 
<!-- 小程序wxml代码: -->
 
 <button open-type="contact"  bindcontact="handleContact" >联系客服</button>

(5)小程序授权页面

<!-- 小程序wxml代码: -->
 
<!-- 需要使用 button 来授权登录 -->
<button wx:if="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button>
<view wx:else>请升级微信版本</view>
//小程序js:

bindGetUserInfo: function(e) {
	getApp().globalData.userRes = e.detail;
	wx.navigateTo({
		url: '../index/index?isAuthSuccess=1'
	})
}


//小程序js: 授权并登录后获得openid
wx.request({
	url: 'https://xxx.com/ajax.ashx?isminiprog=1',
	data: {
		weixinCode: that.loginCode,
		encryptedData: userRes.encryptedData,
		iv: userRes.iv,
		Type: 'wx_getopenid'
	},
	header: {
		"Content-Type": "application/x-www-form-urlencoded"
	},
	method: 'POST',
	//服务端的回掉  
	success: function(result) {
		that.openid = that.GetValueFromNV(result.data, "openid");

	},
	fail: function(rlt) {
		console.log(rlt)

	}
})

发表回复