1

ウェブページがドキュメントのvisibilitychangeイベントを引き起こさないようにするためにChrome拡張機能を作成しています。少なくとも、私はdocument.visibilityStateを上書きできる必要があります(読み込み専用のプロパティでも)。可能であれば、この拡張機能は私の目的のみであり、Chrome拡張機能ストアには含まれないため、Chromeブラウザを設定して自分が望むものを実現できる方法はありますか? Chromeの「デベロッパーモード」がオンになっている間は、この拡張機能を使用する必要があります。Chrome拡張機能:ページの可視性APIを無効にする方法

誰かがこれを達成するための創造的な方法を考えてくれることを願っています。ありがとうございました。

ご注意ください! Spoof or disable the Page Visibility API

テストそれを自分自身::もはやクロームの新しいバージョンで有効になりません4年前の回答で解決策がありました

// This codes worked 4 years ago but not anymore 
var c='(function(){var a=Node.prototype.addEventListener;Node.prototype.addEventListener=function(e){if(e=="visibilitychange"||e=="webkitvisibilitychange"){}else a.apply(this,arguments)}})()' 
, E=document.documentElement; 
E.setAttribute('onreset', c); 
E.dispatchEvent(new CustomEvent('reset')); 
E.removeAttribute('onreset'); 

// THIS WILL STILL LOG THE STATES EVEN WITH THE ABOVE CODE RUNNING 
document.addEventListener("visibilitychange", function() { 
    console.log(document.visibilityState); 
}); 

た場合は、そのことはできないChromeのは、あるそこのFirefox/Safari/Operaこれを実現するブラウザコード?ここで

+0

はそれをテストしていないが、コードは 'EventTarget.prototype'、ないノードを使用する必要があります。 – wOxxOm

+0

また、このページではインラインコードを禁止していますので、Chrome拡張機能のコンテンツスクリプトで追加するときにCSPのページから除外する 'script'要素に' c'というテキストを挿入しようとします。 – wOxxOm

+1

Node.prototypeをEventTarget.prototypeに置き換えようとしましたが、まだ運がありません。コードはdont.jsと呼ばれていますが、別のファイルにあり、そこにalert()を投げて実行していることを確認し、実行中であることを確認しました。 – RichardW

答えて

2

は私のソリューションです:

for (event_name of ["visibilitychange", "webkitvisibilitychange", "blur"]) { 
    window.addEventListener(event_name, function(event) { 
     event.stopImmediatePropagation(); 
    }, true); 
} 

私は(everfi.net)をスキップしたい動画が、私はウィンドウを切り替えるときを検出するためにそれを使用するので、私はblurイベントを追加しました。そのイベントをvisibilitychangewebkitvisibilitychangeと一緒にブロックすると、トリックになりました:)

iframeの内部で動作するように拡張モジュールのマニフェストも変更しました。

全コード:これらの犬のタグで作業を確認https://github.com/NavinF/dont

Google Chrome 63.0.3239.132 (Official Build) (64-bit) 
Revision 2e6edcfee630baa3775f37cb11796b1603a64360-refs/branch-heads/[email protected]{#709} 
OS Mac OS X 
JavaScript V8 6.3.292.49 
Command Line /Applications/Google Chrome.app/Contents/MacOS/Google Chrome --flag-switches-begin --flag-switches-end 
関連する問題