You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
966 B

import { useRouter } from 'vue-router';
export default function useParentAction() {
const router = useRouter();
const sendRouteChange = (url, type) => {
if (window.parent !== window) {
// 在 iframe 中,通知父窗口
let message = {
type: 'ChangeThePath',
data: url,
};
if (type === 'open') {
message = {
type: 'OpenThePath',
data: url,
};
}
if (type === 'back') {
message = {
type: 'BackThePath',
data: url,
};
}
window.parent.postMessage(JSON.stringify(message), '*');
} else {
// 不在 iframe 中,直接使用 router 跳转
if (type === 'open') {
window.open(url);
} else if (type === 'back') {
router.go(-1);
} else {
router.push(url);
}
}
};
const hasParentWindow = window.parent !== window;
return { sendRouteChange, hasParentWindow };
}