目的:
在web移動(dòng)端項(xiàng)目開發(fā)中项郊,經(jīng)常會(huì)遇到各種各樣的兼容性問題,但是之前都缺少總結(jié)锰镀,以前踩的坑可能還會(huì)再去踩一遍娘侍,所以這邊做個(gè)總結(jié),讓之后來的新同事能夠知道互站、了解我們之前踩的坑私蕾,并且之后開發(fā)中避免再入坑,提升開發(fā)效率胡桃;
問題:
問題一:當(dāng)使用vue等SPA框架時(shí)候踩叭,頁面跳轉(zhuǎn)時(shí)候IOS的微信標(biāo)題不會(huì)改變
問題 SPA項(xiàng)目路由跳轉(zhuǎn)時(shí)候,android手機(jī)與pc端通過document.title方法都會(huì)改變網(wǎng)頁標(biāo)題翠胰,但是ios中不能改變容贝;
解決
export const setTitle = (title) => {
// 微信瀏覽器中設(shè)置對(duì)應(yīng)頁面的標(biāo)題
//解決:IOS微信瀏覽器中用document.title 設(shè)置標(biāo)題無效
var body = document.getElementsByTagName('body')[0];
document.title = title;
var iframe = document.createElement("iframe");
iframe.setAttribute("src", "logo.png");
iframe.setAttribute("style", "display:none");
iframe.addEventListener('load', function() {
setTimeout(function() {
try{
iframe.removeEventListener('load');
}catch (err){}
document.body.removeChild(iframe);
}, 0);
});
document.body.appendChild(iframe);
};
問題二:hash與history模式下,請(qǐng)求調(diào)用微信jssdk的config的坑
history的 缺點(diǎn)
1之景、需要額外配置 nginx
2斤富、如果你每一個(gè)頁面都需要微信分享,那么每一個(gè)子路由都需要用當(dāng)前的 URL 換取微信分享 config
3锻狗、android與ios有區(qū)別满力,當(dāng)android通過localhost.href獲取當(dāng)前網(wǎng)頁的鏈接時(shí)候焕参,會(huì)獲得開始進(jìn)入頁面的路由,而不是當(dāng)前頁面的路由油额;意思是:我剛進(jìn)入頁面是http://www.XXXXXXX.com/home ,然后之后我又到了列表頁面:http://www.XXXXXXX.com/list 叠纷,但是當(dāng)我獲取的時(shí)候,我始終獲取的是 http://www.XXXXXXX.com/home 潦嘶;所以config配置一直是錯(cuò)誤的涩嚣,不能調(diào)用對(duì)應(yīng)的jssdk; IOS是正常的掂僵;
4航厚、使用history模式時(shí)候,需要對(duì)機(jī)型做判斷锰蓬,不然config參數(shù)錯(cuò)誤幔睬,并且也會(huì)出現(xiàn)意想不到的問題;
hash的 缺點(diǎn)
1互妓、URL 里面有個(gè) # 溪窒,不好看坤塞。但是在移動(dòng)端看不到url冯勉,沒有太大影響
所以最終還是使用hash更佳方便; 在hash模式下摹芙,用當(dāng)前的 URL 換取微信分享 config配置時(shí)候灼狰,只需要把當(dāng)前域名傳給后臺(tái)換config就可以了,并且只需要做一次配置即可浮禾;可以這樣寫:
const url = window.location.href.split('#')[0]
或者直接寫主域名交胚。例如http://wwww.baidu.com/ 最后一定要加'/',不然就會(huì)出錯(cuò)盈电;
問題三:在調(diào)用微信拍照時(shí)候蝴簇,微信瀏覽器會(huì)重啟
關(guān)于這個(gè)問題,問了微信的技術(shù)匆帚,他們那邊給出的原因是:手機(jī)內(nèi)存不足熬词,拉起相機(jī)的時(shí)候后臺(tái)網(wǎng)頁進(jìn)程被系統(tǒng)回收,并沒有好的解決方案吸重;如果遇到該問題互拾,請(qǐng)先拍照,然后通過選擇相冊(cè)來上傳圖片