fix:app嵌套h5
This commit is contained in:
26
src/main.ts
26
src/main.ts
@@ -14,6 +14,14 @@ let vconsole;
|
||||
if (import.meta.env.VITE_APP_ENV !== 'production') {
|
||||
vconsole = new VConsole();
|
||||
}
|
||||
|
||||
// 添加 TypeScript 类型声明,在文件顶部添加
|
||||
declare global {
|
||||
interface Window {
|
||||
onAndroidBack: () => void;
|
||||
}
|
||||
}
|
||||
|
||||
router.beforeEach((to, from, next) => {
|
||||
if (to.query.digitalYiliToken) {
|
||||
utils.setSessionStorage('xToken', to.query.digitalYiliToken);
|
||||
@@ -25,3 +33,21 @@ const app = createApp(App);
|
||||
app.use(createPinia());
|
||||
app.use(router);
|
||||
app.mount('#app');
|
||||
// 定义路由是否可以返回的判断
|
||||
const routerCanGoBack = () => {
|
||||
const position = router.options.history.state?.position;
|
||||
return typeof position === 'number' && position > 0;
|
||||
};
|
||||
|
||||
// 定义调用APP返回的方法
|
||||
const callAppGoBack = () => {
|
||||
appBridge.navigateBack(); // 使用现有的navigateBack方法替代不存在的goBack方法
|
||||
};
|
||||
// 添加 Android 返回按钮监听方法
|
||||
window.onAndroidBack = () => {
|
||||
if (routerCanGoBack()) {
|
||||
router.back(); // 使用 router.back() 而不是 router.goBack(),因为 Vue Router 使用 back() 方法
|
||||
} else {
|
||||
callAppGoBack(); // 调用 APP 的返回方法
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user