javascript - 在不同网站上的 iframe 中的路线更改时,检测外部点击无法正常工作
问题描述
我正在构建一个网络应用程序,它将嵌入到另一个带有 iframe(同源)的网页中。它使用 vue-router 进行路由更改。我想检测外部点击,以便用户可以通过在外部点击来关闭应用程序。
我有这个代码(main.js)::
/* Simple click outside detector for vue3 */
const clickOutside = {
beforeMount: (el, binding) => {
el.clickOutsideEvent = event => {
//Check if the click was outside the el and his children
if (!(el == event.target || el.contains(event.target))) {
// and if it did, call method provided in attribute value
binding.value();
}
};
document.addEventListener("click", el.clickOutsideEvent);
},
unmounted: el => {
document.removeEventListener("click", el.clickOutsideEvent);
}
};
用作指令(App.vue):
<div id="aimy-home" v-click-outside="handleCloseClick">
<!-- CONTENT -->
<!-- ROUTER CONTENT -->
<router-view />
< /div>
对不起,我无法制作片段。
上面的代码在主页上运行良好。问题是路线更改后,即使用户单击应用程序的“内部”,应用程序也会关闭。
解决方案
您可以尝试 iframe 上的 onBlur 函数来检测焦点何时离开框架,也许?就像是
<iframe
onBlur={()=>{console.log("iframe no longer focussed")}}
>
[your content]
<iframe />
推荐阅读
- redirect - keycloak 重定向到 https://localhost 而不是 http://localhost
- amcharts4 - Amchart 标签和标题位置不正确
- javascript - 如何在 SAP 混合应用程序中包含具有相对路径的集合?
- elm - 如何从 elm 对象中获取特定的键值对
- python - 如何在一个请求中收集所有可用的 Pod 指标
- sql - SQL如何查询总计和小计
- regex - 我的公式只保留一个单词,空格后没有任何内容
- javascript - 将每个对象属性乘以 2 并从结果中创建新对象
- javascript - 使用一个链接滚动两列
- linux - 从 LINUX 特定目录下的文件中查找特定字符串