You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
oa-base/pages/index/index.vue

55 lines
1.6 KiB
Vue

<template>
<web-view class="webview" @message="webLoad" style="flex: 1;" :src="config.h5Url"></web-view>
</template>
<script setup>
import { ref } from 'vue'
import config from "../../config";
import {onExit } from "@dcloudio/uni-app";
import { Communication } from '../../utils/communication.js';
const commun=new Communication()
const permissionListener = uni.createRequestPermissionListener();
permissionListener.onRequest((e)=>{
console.log('APP执行onRequest',e)
commun.sendToH5('permission-application',e);
})
permissionListener.onConfirm((e) => {
});
permissionListener.onComplete((e) => {
console.log('APP执行onComplete',e)
const arr=['android.permission.ACCESS_COARSE_LOCATION','android.permission.ACCESS_FINE_LOCATION','android.permission.ACCESS_LOCATION_EXTRA_COMMANDS','android.permission.ACCESS_MOCK_LOCATION']
commun.sendToH5('permission-complete',e);
})
onExit(()=>{
permissionListener.stop()
})
function initializeWebView() {
const currentWebview = getCurrentPages().pop().$getAppWebview()
console.log('当前view',currentWebview)
commun.setWebView(currentWebview.children()[0])
}
commun.registerHandler('load-complete',()=>{
})
const webLoad = (e) => {
try {
const message = e.detail.data?.[0] || '';
if (message.action==='load-complete'){
initializeWebView()
const {statusBarHeight} = uni.getSystemInfoSync()
commun.webViewObj.setStyle({
top: statusBarHeight,
bottom: 0,
})
}else {
commun.handleMessage(message);
}
} catch (error) {
}
};
</script>
<style>
</style>