1、为何不能在网页调用微信jsapi? 2、安卓手机wx.hideLoading()无效 3、ios不显示tabBar的文字
说到这问题,相信大部分程序员老手都会轻蔑一笑,当然是跨域导致的啊!但是为了一些小白,我觉得还是很有必要再说一次的。
首先介绍什么是跨域,由于浏览器的同源策略,出于防范跨站脚本的攻击,禁止客户端脚本( 主要是JavaScript)对不同域名的服务器接口进行跨站调用。一般,只要网站的 协议名protocol(HTTP、ftp等)
、 主机host
、 端口号port
这三个中的任意一个不同,网站间的数据请求与传输便构成了跨域。
公众号开发,要想在前端调用jssdk,先要通过config接口注入权限验证配置。也就是先要获取wx.config 中参数的值。由于其中的参数值需要通过access_token和jsapi_ticket这两个参数来运算得到,而这两个参数需要请求微信接口才能获取,微信接口域名跟我们的网页明显不在同一域名下,所以造成跨域,从而导致我们无法在前端获取配置的参数。因此我们只能通过服务器用服务器端语言php java c#等进行相关微信接口的请求。
另外,也有人非得用前端去请求,比如我,通过JSONP形式去请求数据,首先:JSONP这种非官方协议是需要后台配合写返回数据的,也就是返回回调函数,微信不可能做这个,数据不安全。
总而言之,言而总之,微信就是要让你在后台使用服务端语言请求接口!!也为了安全!
java版的jssdk 接口出入配置参见http://www.cuiyongzhi.com/post/57.html
2、安卓手机wx.hideLoading()无效
作者:意外金喜
在onLoad()中
[javascript] view plain copy
wx.showLoading({
title: “数据加载中”,
mask: true
});
异步获取数据后 wx.hideLoading(); 测试结果 在微信开发者工具和iOS上都能正常隐藏loading框,安卓手机上却无法隐藏。 解决方法 在坑了很久以后发现在wx.hideLoading()方法外层加个setTimeout居然就解决了。
[javascript] view plain copy
setTimeout(() => {
wx.hideLoading();
}, 100);
加了一个很小的延迟。尴尬虽然问题解决了,但是也不知道是为什么。
在写tabBar的时候配置了字体颜色,代码如下:
结果安卓上正常显示,苹果手机却无法显示tabBar上的文字,仔细看了下官网,
需要16进制颜色值
改成这样就好了。
然后又发现页面设置的背景颜色,iOS正常,安卓手机又无法显示了。。。
background: #666;
经过多次测试,得到的结果是,这个16进制颜色值不能简写,6位要写全。
background: #666666; 这样就正常了。