feat(ProjectManage): 为 AI助手 iframe 添加窗口打开拦截功能

- 在 iframe 上添加 @load 事件处理函数 onIframeLoad
- 在 onIframeLoad 中覆盖 iframe 的 window.open 方法
- 提供示例逻辑,拦截并用主窗口打开链接
This commit is contained in:
du.meimei
2025-05-27 10:28:13 +08:00
parent 9b3d135d31
commit 8145d3538c

View File

@@ -205,8 +205,10 @@
:footer="null"
>
<iframe
ref="myIframe"
:src="aiAssistantUrlWithToken"
style="width: 100%; height: 100%; min-height: 500px"
@load="onIframeLoad"
frameborder="0"
>
</iframe>
@@ -314,7 +316,7 @@ const professionalCurrentPage = ref(0);
const conceptTestRef = ref(null);
const tasteTestRef = ref(null);
const packageTestRef = ref(null);
const myIframe = ref(null)
const props = defineProps({
groupId: { type: Number, value: -1 }
// groupList: {
@@ -656,6 +658,25 @@ function professionalPrev() {
});
}
function onIframeLoad() {
console.log('onIframeLoad');
const iframeWindow = myIframe.value.contentWindow
console.log(iframeWindow);
// 覆盖 window.open 方法
iframeWindow.open = function (url, target, features) {
console.log('拦截到 window.open:', { url, target, features })
// 自定义逻辑,例如:
// return window.open(url, '_blank') // 继续用当前窗口打开
// 或者阻止打开
// return null
// 示例:用主窗口打开链接
window.open(url, '_blank')
return null // 阻止 iframe 的 window.open
}
}
/**
* 监听点击事件开启或关闭AI iFrame
* @param event