javascript - 如何使用 javascript 处理启动应用程序确认框
问题描述
当浏览器选项卡未聚焦时,我想更改我的视图。我使用window.onblur
事件来处理这种情况,但我想处理一个用例。
当启动应用程序确认框出现时,窗口会触发模糊事件,但用户仍然在页面中,因此我不想更改页面上的视图。只有当用户切换不同的窗口或选项卡时,我才应该更改视图。
启动应用程序确认框示例
我已经搜索了启动应用程序确认的事件以及窗口、导航器和文档对象中的对象,但我没有找到任何相关的对象、函数或事件。我也在 mdn 中搜索了特定的 API 来实现这一点,但我找不到任何解决这个问题的方法。
如果您知道有关启动确认框的任何文档,请分享。我将不胜感激任何可以从另一个角度解决我的用例的帮助。
解决方案
这可以通过处理visibilitychange
事件而不是blur
如下来解决。
document.addEventListener("visibilitychange", function() {
//Change your view here
});
更多细节在这里。请注意,也有特定于浏览器的事件。
"visibilitychange"
"msvisibilitychange"
"webkitvisibilitychange"
以防万一,您还想处理用户点击浏览器之外的情况,同时保持网站可见。blur
改为处理事件。
但是现在,“启动应用程序弹出”也会使窗口模糊,要专门处理。它不会触发任何要处理的事件
我们可以快速解决它。
这个想法基于以下两种行为,
- 触发此弹出窗口的链接不会以 http 或 https 开头。例如,zoom 使用以 开头的 url
zoommtg://
来启动本机应用程序。 onclick
在事件之前触发onblur
的事件。
因此,在事件中引入标志click
将帮助我们处理此弹出窗口。
changeViewFlag=true;
window.onblur=function(event){
if(changeViewFlag==true)
{
//Change your view here
}
changeViewFlag=true;
}
window.onclick=function(event){
if(event.target.href!=null &&
event.target.href.split("://").length>1 &&
["http","https"].indexOf(event.target.href.split("://")[0])==-1)
{
changeViewFlag=false;
}
}
推荐阅读
- python - wxPython;任何文本字段中的右键单击上下文菜单都会导致程序崩溃并出现错误“m_menuDepth > 0”?
- javascript - .3ds 加载器不加载材质和纹理
- python - Python:两个日期时间之间的小时数
- firebase - 尝试获取 SHA 证书指纹时出现 firebase 错误?
- python - 如何将sql输出合并到一个数据框中
- c++ - 即使我通过作用域传递它,我也无法访问我的变量的值
- python - 将有序的dataFrame转换为字典,元素从底部开始
- ios - 如何在 Swift IOS 中使用 NSKeyedArchiver 保存带有子类的对象
- html - 从迭代循环中隐藏特定内容并在隐藏面板中显示
- spring-boot - 使用同一服务的多个版本时,我们应该如何设计数据库