1、為何不能在網(wǎng)頁(yè)調(diào)用微信jsapi? 2、安卓手機(jī)wx.hideLoading()無(wú)效 3、ios不顯示tabBar的文字
說(shuō)到這問(wèn)題,相信大部分程序員老手都會(huì)輕蔑一笑,當(dāng)然是跨域?qū)е碌陌。〉菫榱艘恍┬“?,我覺(jué)得還是很有必要再說(shuō)一次的。
首先介紹什么是跨域,由于瀏覽器的同源策略,出于防范跨站腳本的攻擊,禁止客戶(hù)端腳本( 主要是JavaScript)對(duì)不同域名的服務(wù)器接口進(jìn)行跨站調(diào)用。一般,只要網(wǎng)站的 協(xié)議名protocol(HTTP、ftp等)、 主機(jī)host、 端口號(hào)port 這三個(gè)中的任意一個(gè)不同,網(wǎng)站間的數(shù)據(jù)請(qǐng)求與傳輸便構(gòu)成了跨域。
公眾號(hào)開(kāi)發(fā),要想在前端調(diào)用jssdk,先要通過(guò)config接口注入權(quán)限驗(yàn)證配置。也就是先要獲取wx.config 中參數(shù)的值。由于其中的參數(shù)值需要通過(guò)access_token和jsapi_ticket這兩個(gè)參數(shù)來(lái)運(yùn)算得到,而這兩個(gè)參數(shù)需要請(qǐng)求微信接口才能獲取,微信接口域名跟我們的網(wǎng)頁(yè)明顯不在同一域名下,所以造成跨域,從而導(dǎo)致我們無(wú)法在前端獲取配置的參數(shù)。因此我們只能通過(guò)服務(wù)器用服務(wù)器端語(yǔ)言php java c#等進(jìn)行相關(guān)微信接口的請(qǐng)求。
另外,也有人非得用前端去請(qǐng)求,比如我,通過(guò)JSONP形式去請(qǐng)求數(shù)據(jù),首先:JSONP這種非官方協(xié)議是需要后臺(tái)配合寫(xiě)返回?cái)?shù)據(jù)的,也就是返回回調(diào)函數(shù),微信不可能做這個(gè),數(shù)據(jù)不安全。
總而言之,言而總之,微信就是要讓你在后臺(tái)使用服務(wù)端語(yǔ)言請(qǐng)求接口??!也為了安全!
java版的jssdk 接口出入配置參見(jiàn)http://www.cuiyongzhi.com/post/57.html
2、安卓手機(jī)wx.hideLoading()無(wú)效
作者:意外金喜
在onLoad()中
[javascript] view plain copywx.showLoading({ title: “數(shù)據(jù)加載中”, mask: true }); 異步獲取數(shù)據(jù)后 wx.hideLoading(); 測(cè)試結(jié)果 在微信開(kāi)發(fā)者工具和iOS上都能正常隱藏loading框,安卓手機(jī)上卻無(wú)法隱藏。 解決方法 在坑了很久以后發(fā)現(xiàn)在wx.hideLoading()方法外層加個(gè)setTimeout居然就解決了。
[javascript] view plain copysetTimeout(() => { wx.hideLoading(); }, 100); 加了一個(gè)很小的延遲。尷尬雖然問(wèn)題解決了,但是也不知道是為什么。
在寫(xiě)tabBar的時(shí)候配置了字體顏色,代碼如下:
結(jié)果安卓上正常顯示,蘋(píng)果手機(jī)卻無(wú)法顯示tabBar上的文字,仔細(xì)看了下官網(wǎng),
需要16進(jìn)制顏色值
改成這樣就好了。
然后又發(fā)現(xiàn)頁(yè)面設(shè)置的背景顏色,iOS正常,安卓手機(jī)又無(wú)法顯示了。。。
background: #666;
經(jīng)過(guò)多次測(cè)試,得到的結(jié)果是,這個(gè)16進(jìn)制顏色值不能簡(jiǎn)寫(xiě),6位要寫(xiě)全。
background: #666666; 這樣就正常了。