爱奇艺 PC 网页端 播放广告时,是怎么检测到我把它放到了后台的?
資深大佬 : thefack 1
环境是 Windows10 20h2,用的 Chrome 86,已经暂停了广告拦截器扩展
当网页不可见时,广告倒计时就停止减 1 了(虽然声音表示广告暂时还在继续,但是播放几秒后就不继续播放广告了,切回去,视频区域为黑屏状态)
然后我用扩展想屏蔽对网页可见性的检测,但是没有效果。请问还有什么原因吗?
扩展的的主要代码:
!function () { // 需在 网页 js 环境中运行的代码 let code = function () { // visibilityState 、hidden 状态 Object.defineProperty(document, 'visibilityState', { configurable: false, writable: false, value: 'visible', }); Object.defineProperty(document, 'hidden', { configurable: false, writable: false, value: false, }); // 拦截检测可行性的事件 for (let eventName of ["visibilitychange", "webkitvisibilitychange"]) { window.addEventListener(eventName, function handle(e) { e.stopImmediatePropagation(); e.preventDefault(); }, true); } }; // 嵌入 js 代码 let script = document.createElement('script'); script.textContent = '(' + code + ')()'; (document.head || document.documentElement).appendChild(script); script.remove(); }();
大佬有話說 (5)