Always on focus là một script giúp ngăn các trang web biết rằng bạn đã chuyển tab, rời chuột khỏi cửa sổ hoặc không tương tác với trang web. Đoạn script này có các tính năng sau:
-
Vô hiệu hóa Page Visibility API: Khóa thuộc tính
hiddenthànhfalsevàvisibilityStatethànhvisible. Hỗ trợ tất cả các tiền tố trình duyệt (webkit,moz,ms). -
Hold trạng thái Focus: Tắt
window.onblur()và ghi đèdocument.hasFocus()luôn trả về True mọi lúc (Ví dụ cái này khi chuyển tab hoặc bấm ra ngoài cửa sổ sẽ không bị tính là thoát tab). -
Chặn các sự kiện theo dõi: Vô hiệu hóa các sự kiện
visibilitychange,blur,pagehidevà các sự kiện di chuột nhưmouseleave,mouseout(Ví dụ giúp video không bị tự động dừng hoặc trò chơi không bị tạm dừng khi chuyển tab). -
Tối ưu tương tác: Chỉ chặn các sự kiện gây mất focus của hệ thống, vẫn giữ nguyên khả năng nhập liệu trên các thẻ
input,textareavà các vùng soạn thảo văn bản.
Đây là ví dụ về website sẽ thay đổi màu khi không focus vào tab.
Test trang này ở đây
- Copy hết code bên dưới
- Bấm F12 ở web cần tắt
- Vào Console (Bảng điều khiển)
- Paste và Enter :)
(function() {
'use strict';
const lock = (obj, prop, val) => {
Object.defineProperty(obj, prop, { get: () => val, set: () => {}, configurable: false });
};
['hidden', 'webkitHidden', 'mozHidden', 'msHidden'].forEach(p => lock(document, p, false));
['visibilityState', 'webkitVisibilityState', 'mozVisibilityState', 'msVisibilityState'].forEach(p => lock(document, p, 'visible'));
document.hasFocus = () => true;
const block = (e) => {
if (e.type === 'blur' && (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA' || e.target.isContentEditable)) return;
e.stopImmediatePropagation();
e.preventDefault();
};
['visibilitychange', 'webkitvisibilitychange', 'blur', 'mouseleave', 'mouseenter', 'pagehide', 'mouseout'].forEach(ev => {
window.addEventListener(ev, block, true);
document.addEventListener(ev, block, true);
});
window.onblur = document.onvisibilitychange = null;
console.log("%c[ACTIVE]", "color: #00ff00; font-weight: bold;");
})();-
Tải Tampermonkey (Cho Chrome, Edge, Coccoc, etc...) hoặc Userscripts (Cho Safari trên macOS).
-
Bấm vào đây để cài đặt Scripts
-
Bật Userscript ở trong Dashboard của Tampermonkey hoặc Userscripts.
