解决Vue开发中Edge浏览器无法最小化反弹回来异常问题
·
感谢作者同样遇到这个问题
原文链接:https://blog.csdn.net/u012961419/article/details/157805074
出现场景:
内网如192.xxx网段或本地Vue开发环境(特别是有vue-router相关的项目)
Edge浏览器版本号: 版本 149.0.4022.52 (正式版本) (64 位)
解决方法
下载扩展插件资源:edge-block-visibilitychange-extension
插件已关联到本文的资源绑定
资源扩展插件使用方法:
- 解压插件 zip
- Edge 地址栏输入
edge://extensions/- 开启“开发人员模式”
- 点“加载解压缩的扩展”
- 选择解压后的
edge-block-visibilitychange-extension文件夹

PS若无法下载zip
1. 创建一个 edge-block-visibilitychange-extension 文件夹
2. 创建 block-visibilitychange.js
(function () {
"use strict";
const blockedListeners = new WeakSet();
const originalAddEventListener = EventTarget.prototype.addEventListener;
const originalRemoveEventListener = EventTarget.prototype.removeEventListener;
function isVisibilityChangeTarget(target) {
return target === document || target === window;
}
function shouldBlock(target, type) {
return type === "visibilitychange" && isVisibilityChangeTarget(target);
}
function swallowVisibilityChange(event) {
event.stopImmediatePropagation();
}
originalAddEventListener.call(
document,
"visibilitychange",
swallowVisibilityChange,
true
);
EventTarget.prototype.addEventListener = function (type, listener, options) {
if (shouldBlock(this, type)) {
if (typeof listener === "function" || listener && typeof listener.handleEvent === "function") {
blockedListeners.add(listener);
}
console.info("[VisibilityChange Blocker] Blocked visibilitychange listener:", listener);
return;
}
return originalAddEventListener.call(this, type, listener, options);
};
EventTarget.prototype.removeEventListener = function (type, listener, options) {
if (shouldBlock(this, type) && blockedListeners.has(listener)) {
blockedListeners.delete(listener);
return;
}
return originalRemoveEventListener.call(this, type, listener, options);
};
function blockOnVisibilityChangeProperty(target, label) {
let storedHandler = null;
try {
Object.defineProperty(target, "onvisibilitychange", {
configurable: true,
enumerable: true,
get() {
return storedHandler;
},
set(handler) {
storedHandler = typeof handler === "function" ? handler : null;
if (storedHandler) {
console.info("[VisibilityChange Blocker] Blocked " + label + ".onvisibilitychange:", storedHandler);
}
}
});
} catch (error) {
console.warn("[VisibilityChange Blocker] Could not patch " + label + ".onvisibilitychange:", error);
}
}
blockOnVisibilityChangeProperty(document, "document");
blockOnVisibilityChangeProperty(window, "window");
console.info("[VisibilityChange Blocker] Active on this page.");
})();
3. 创建 manifest.json
{
"manifest_version": 3,
"name": "VisibilityChange Blocker",
"version": "1.0.0",
"description": "Blocks document visibilitychange handlers on normal web pages to prevent minimize/focus hijacking.",
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"block-visibilitychange.js"
],
"run_at": "document_start",
"world": "MAIN"
}
]
}
- Edge 地址栏输入
edge://extensions/ - 开启“开发人员模式”
- 点“加载解压缩的扩展”
- 选择刚刚的的
edge-block-visibilitychange-extension文件夹 - 启动扩展插件,刷新刚刚出现问题网站进行测试。
更多推荐



所有评论(0)