問題:蘋果手機可以顯示圖片跳轉按鈕,但是安卓手機無法顯示出來。、問題:蘋果手機可以顯示圖片跳轉按鈕,但是安卓手機無法顯示出來。、
原因:
看看圖片鏈接是 //
還是 http
開頭,如果是 //test.com/upload/60/2b605429ddcc756370be777761c98d.png
這種形式的圖片鏈接,會導致安卓手機在 <script type="text/wxtag-template">
標簽里的圖片無法顯示出來。
解決:
圖片鏈接加上前綴 http:
或者 https:
,變成 https://test.com/upload/60/2b605429ddcc756370be777761c98d.png
。
問題:無法顯示跳轉小程序按鈕
wx.config
參數是否正確,比如appId
和signature
。容易遇到問題是signature
簽名的算法的計算。
根據官方文檔:
簽名生成規則如下:參與簽名的字段包括noncestr(隨機字符串), 有效的jsapi_ticket, timestamp(時間戳), url(當前網頁的URL,不包含#及其后面部分) 。
生成簽名用到的 url 參數 必須是 當前網頁的 URL,不包含 # 及其后面部分。如果當前打開的 H5 頁面包含有 # 字符,請按要求進行舍棄然后計算簽名。PHP 代碼示例:
// $_REQUEST['url'] 就是頁面 JS 獲取到的 location.href
$url_raw = $_REQUEST['url'];
$url_arr = explode('#', $url_raw);
$url = reset($url_arr);
- 務必仔細檢查
<wx-open-launch-weapp>
里填寫的username
或者path
屬性是否按照官方文檔填寫正確。
結合 uniapp 使用
<script type="text/wxtag-template">
標簽里使用變量 不能 使用 vue 的寫法,如:
<image :src="isVip ? ad_mini : ad" class="btnMore22" width="90%"></image>
而是要用小程序原生的寫法,使用 {{ }}
將變量包圍起來:
<image src="{{ isVip ? ad_mini : ad }}" class="btnMore22" width="90%"></image>
- Vue 增加忽略自定義元素:
Vue.config.ignoredElements = ['wx-open-launch-weapp'];
其它要注意的問題
引用官方文檔:
- 開放對象:已認證的服務號,服務號綁定“JS接口安全域名”下的網頁可使用此標簽跳轉任意合法合規的小程序。
- 頁面中與布局和定位相關的樣式,如position: fixed; top -100;等,盡量不要寫在插槽模版的節點中,請聲明在標簽或其父節點上;
- 對於有CSP要求的頁面,需要添加白名單frame-src https://*.qq.com webcompt:,才能在頁面中正常使用開放標簽。
來自第三方參考鏈接:https://developers.weixin.qq.com/community/develop/article/doc/000c00b4490678f528baf2cf756413
https://www.shuzhiduo.com/A/A7zgQvkP54/
https://juejin.cn/post/6844904193635909645
- 如果你跳轉之后顯示頁面不存在,請檢查下
path
的路徑結尾是否寫上了.html
; wx.config
在初始化授權寫上開放標簽openTagList: ['wx-open-launch-weapp']
;wx.config
中jsApiList
里的屬性不能為空,否則會提示config:param is empty
,
wx.config({
// ...
jsApiList: ['onMenuShareAppMessage'], // 因為不能為空,所以我隨便寫了一個微信的方法
openTagList: ['wx-open-launch-weapp'],
});
- 如果要測試
wx.config
參數是否配置成功,將debug: true
屬性加上,如果用微信開發者工具或者微信客戶端訪問網頁彈出對話框提示{errMsg: "config:ok”}
,說明已經接入成功; - 如果你覺得里面寫樣式不好寫,可以在里面樣式style寫opacity:0;,這樣的話開放標簽只是用來填充,大小自己控制就行;
- 經過測試發現標簽內定義的樣式真的很尷尬,且不受控制,所以我們直接將標簽用 CSS 絕對定位並設透明度為
opacity: 0
, 蓋在了我們原本的設計圖上; - 透明度為
opacity: 0
的標簽<script type="text/wxtag-template">
不能為空,否則寬高會被解析為 0,也就是按鈕根本點擊不到; - 在 VUE 的 mounted 生命周期回調函數內偵聽開放標簽的回調事件:
mounted(){
var btn = document.getElementById(this.id)
btn.addEventListener('launch', e => {
// 在此處可設置粘貼板內數據,數據是傳遞給 app 的參數進,
console.log('success');
});
btn.addEventListener('error', e => {
// 在此處可設置粘貼板內數據,數據是傳遞給 app 的參數進,
console.log('fail', e.detail);
// 喚醒失敗的情況下,可用於降級處理比如在此處跳轉到應用寶
});
}
- 如果微信版本低於7.0.12 開放標簽是無法使用的,所以最好在開放標簽外套一層 DIV 用於點擊事件,在事件中斷段微信版本號如果低於,則降級到應用寶之類的方案(參考例子:https://www.shuzhiduo.com/A/A7zgQvkP54/)