document.hidden 강제 false로 백그라운드 탭 이미지 로딩 보강
- document.hidden, document.visibilityState 강제 오버라이드 (페이지의 lazy loading 코드가 탭 상태를 확인해도 항상 visible) - IntersectionObserver 후킹 유지 (observe 즉시 콜백) - 두 조치로 백그라운드 탭에서도 일반 탭처럼 IO + 이미지 로딩 동작
This commit is contained in:
@@ -24,6 +24,20 @@
|
|||||||
// Phase 1: IntersectionObserver 후킹 (document-start 에서 즉시 실행)
|
// Phase 1: IntersectionObserver 후킹 (document-start 에서 즉시 실행)
|
||||||
// 백그라운드 탭에서 IO가 동작하지 않아도 observe() 즉시 콜백 실행
|
// 백그라운드 탭에서 IO가 동작하지 않아도 observe() 즉시 콜백 실행
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
|
// document.hidden 강제 false (배경 탭에서도 페이지가 활성화된 것으로 인식)
|
||||||
|
try {
|
||||||
|
Object.defineProperty(document, 'hidden', { get: () => false, configurable: true });
|
||||||
|
Object.defineProperty(document, 'visibilityState', { get: () => 'visible', configurable: true });
|
||||||
|
} catch (_) {}
|
||||||
|
try {
|
||||||
|
const proto = Document.prototype;
|
||||||
|
if (proto) {
|
||||||
|
Object.defineProperty(proto, 'hidden', { get: () => false, configurable: true });
|
||||||
|
Object.defineProperty(proto, 'visibilityState', { get: () => 'visible', configurable: true });
|
||||||
|
}
|
||||||
|
} catch (_) {}
|
||||||
|
|
||||||
|
// IntersectionObserver 후킹: observe() 즉시 콜백 실행
|
||||||
const OrigIO = window.IntersectionObserver;
|
const OrigIO = window.IntersectionObserver;
|
||||||
if (OrigIO) {
|
if (OrigIO) {
|
||||||
const HookedIO = function (callback, options) {
|
const HookedIO = function (callback, options) {
|
||||||
|
|||||||
Reference in New Issue
Block a user