W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
版本要求:支付寶客戶端 10.1.35 或更高版本。
針對小程序不能外跳 H5 頁面,提供 web-view 頁面承載組件將 H5 嵌套進小程序,實現(xiàn)在小程序內(nèi)打開 H5 頁面。小程序跳轉(zhuǎn)相關內(nèi)容請參見 小程序跳轉(zhuǎn) FAQ,調(diào)試頁面訪問受限解決方法請參見 web-view 調(diào)試報錯頁面訪問受限處理方法,開發(fā)過程中遇到的問題可參考 web-view 常見問題,涵蓋了web-view 與 H5 、web-view 頁面設計相關、開放能力等方面。
每個頁面只能有一個 web-view ,請不要渲染多個 web-view ,會自動鋪滿整個頁面,并覆蓋其它組件。
注意:
在使用該組件之前,請確保 H5 頁面中所有的域名地址(含靜態(tài)資源地址,例如圖片、.js 文件地址等)已經(jīng)加入到 web-view 的 H5 域名白名單內(nèi)。如未添加,請參見 配置 H5 域名 進行添加。
注意:如果已提交版本再添加的 H5 域名,需要重新提交版本審核上架。否則仍然提示頁面受限。
<!-- API-DEMO page/component/webview/webview.axml -->
<view class="page">
<web-view src="https://render.alipay.com/p/s/web-view/index" rel="external nofollow" onMessage="onmessage"></web-view>
</view>
// API-DEMO page/component/webview/webview.js
Page({
data: {},
onShareAppMessage(options) {
my.alert({content:JSON.stringify(options.webViewUrl)});
return {
title: '分享 web-View 組件',
desc: 'View 組件很通用',
path: 'page/component/component-pages/webview/baidu',
'web-view': options.webViewUrl,
};
},
onmessage(e){
my.alert({
content: '拿到數(shù)據(jù)'+JSON.stringify(e), // alert 框的標題
});
}
});
屬性 | 類型 | 默認值 | 描述 | 最低版本 |
---|---|---|---|---|
src | String | - | web-view 要渲染的 H5 網(wǎng)頁 URL ,需要在如下路徑中 支付寶小程序管理中心 > 設置 > 開發(fā)設置 >H5域名配置 進行 H5 域名白名單配置。請參見 配置 H5 白名單流程。 | - |
onMessage | EventHandle | - | 網(wǎng)頁向小程序 postMessage 消息。e.detail = { data } |
- |
web-view 載入的 H5 頁面可以使用手動引入 https://appx/web-view.min.js(此鏈接僅支持在支付寶客戶端內(nèi)訪問),提供了相關的 API 供您使用(調(diào)試請以真機效果為準)。 說明:如需嵌入 H5 頁面請使用表格中支持的 API,表格中如不支持請調(diào)用原生 js。
接口類別 | 接口名 | 說明 |
---|---|---|
導航欄 | my.navigateTo | 保留當前頁面,跳轉(zhuǎn)到應用內(nèi)的某個指定頁面。 |
導航欄 | my.navigateBack | 關閉當前頁面,返回上一級或多級頁面。 |
導航欄 | my.switchTab | 跳轉(zhuǎn)到指定 tabBar 頁面,并關閉其他所有非 tabBar 頁面。 |
導航欄 | my.reLaunch | 關閉當前所有頁面,跳轉(zhuǎn)到應用內(nèi)的某個指定頁面。 |
導航欄 | my.redirectTo | 關閉當前頁面,跳轉(zhuǎn)到應用內(nèi)的某個指定頁面。 |
圖片 | my.chooseImage | 拍照或從手機相冊中選擇圖片(可將獲取到的圖片路徑通過 my.postMessage() 將相關數(shù)據(jù)傳遞給小程序后進行圖片上傳)。 |
圖片 | my.previewImage | 預覽圖片。 |
位置 | my.getLocation | 獲取用戶當前的地理位置信息。 |
位置 | my.openLocation | 使用支付寶內(nèi)置地圖查看位置。 |
交互反饋 | my.alert | 警告框。 |
交互反饋 | my.showLoading | 顯示加載提示。 |
交互反饋 | my.hideLoading | 隱藏加載提示。 |
緩存 | my.setStorage | 將數(shù)據(jù)存儲在本地緩存中指定的 key 中,會覆蓋掉原來該 key 對應的數(shù)據(jù)。 |
緩存 | my.getStorage | 獲取緩存數(shù)據(jù)。 |
緩存 | my.removeStorage | 刪除緩存數(shù)據(jù)。 |
緩存 | my.clearStorage | 清除本地數(shù)據(jù)緩存。 |
緩存 | my.getStorageInfo | 異步獲取當前緩存的相關信息。 |
網(wǎng)絡狀態(tài) | my.getNetworkType | 獲取當前網(wǎng)絡狀態(tài)。 |
分享 | my.startShare | 分享當前頁面,當執(zhí)行my.startShare() 時會喚起當前小程序頁面的分享功能。 |
喚起支付 | my.tradePay | 喚起支付(僅支持使用該 API 喚起支付,不支持使用 H5 進行支付) |
向小程序發(fā)送消息 | my.postMessage | 向小程序發(fā)送消息,自定義一組或多組 key 、 value 數(shù)據(jù),格式為 JSON ,如:my.postMessage({name:"測試web-view"}) 。 |
監(jiān)聽小程序發(fā)過來的消息 | my.onMessage | 監(jiān)聽小程序發(fā)過來的消息, webview組件控制。 |
獲取當前環(huán)境 | my.getEnv | 獲取當前環(huán)境。 |
web-view H5 頁面代碼:
<script type="text/javascript" src="https://appx/web-view.min.js" rel="external nofollow" rel="external nofollow" ></script>
<!-- 如該 H5 頁面需要同時在非支付寶客戶端內(nèi)使用,為避免該請求404,可參考以下寫法 -->
<!-- 請盡量在 html 頭部執(zhí)行以下腳本 -->
<script>
if (navigator.userAgent.indexOf('AlipayClient') > -1) {
document.writeln('<script src="https://appx/web-view.min.js" rel="external nofollow" rel="external nofollow" ' + '>' + '<' + '/' + 'script>');
}
</script>
<script>
my.navigateTo({url: '../get-user-info/get-user-info'});
// 網(wǎng)頁向小程序 postMessage 消息
my.postMessage({name:"測試web-view"});
// 接收來自小程序的消息。
my.onMessage = function(e) {
console.log(e); // {'sendToWebView': '1'}
}
// 判斷是否運行在小程序環(huán)境里
my.getEnv(function(res) {
console.log(res.miniprogram) // true
});
my.startShare();
</script>
my.postMessage 信息發(fā)送后,小程序頁面接收信息時,會執(zhí)行 onMessage 配置的方法:
<!-- .axml -->
<view>
<web-view id="web-view-1" src="..." onMessage="test"></web-view>
</view>
// 小程序頁面對應的 page.js 聲明 test 方法,
// 由于 page.axml 里的 web-view 組件設置了 onMessage="test",
// 當頁面里執(zhí)行完 my.postMessage 后,test 方法會被執(zhí)行
Page({
onLoad(e){
this.webViewContext = my.createWebViewContext('web-view-1');
},
test(e){
my.alert({
content:JSON.stringify(e.detail),
});
this.webViewContext.postMessage({'sendToWebView': '1'});
},
});
用戶分享時可獲取當前 web-view 的 URL ,即在 onShareAppMessage 回調(diào)中返回 webViewUrl 參數(shù)。
Page({
onShareAppMessage(options) {
console.log(options.webViewUrl)
}
});
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: