您现在的位置: 首页 > 微信小程序开发 > 文档 >

微信小程序开发问答《五十二》为何不能在网页调用微信jsapi & 安卓手机wx.hid

来源:微信小程序 编辑:Yiyongtong.com 发布时间:2017-11-23 17:35热度:

1、为何不能在网页调用微信jsapi? 2、安卓手机wx.hideLoading()无效 3、ios不显示tabBar的文字

 
 
 
1、为何不能在网页调用微信jsapi?
作者:独行骚年

说到这问题,相信大部分程序员老手都会轻蔑一笑,当然是跨域导致的啊!但是为了一些小白,我觉得还是很有必要再说一次的。

首先介绍什么是跨域,由于浏览器的同源策略,出于防范跨站脚本的攻击,禁止客户端脚本( 主要是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()中

 

				
  1. [javascript] view plain copy
  2. wx.showLoading({
  3. title: “数据加载中”,
  4. mask: true
  5. });

异步获取数据后  wx.hideLoading();  测试结果  在微信开发者工具和iOS上都能正常隐藏loading框,安卓手机上却无法隐藏。  解决方法  在坑了很久以后发现在wx.hideLoading()方法外层加个setTimeout居然就解决了。

 

				
  1. [javascript] view plain copy
  2. setTimeout(() => {
  3. wx.hideLoading();
  4. }, 100);

加了一个很小的延迟。尴尬虽然问题解决了,但是也不知道是为什么。

 
3、ios不显示tabBar的文字

在写tabBar的时候配置了字体颜色,代码如下:

 

结果安卓上正常显示,苹果手机却无法显示tabBar上的文字,仔细看了下官网,

需要16进制颜色值

改成这样就好了。

 

然后又发现页面设置的背景颜色,iOS正常,安卓手机又无法显示了。。。

background: #666;

经过多次测试,得到的结果是,这个16进制颜色值不能简写,6位要写全。

background: #666666; 这样就正常了。