プロジェクトでは、画面のキャプチャ、コピー、印刷を禁止する必要があります。インターネット上にはさまざまなスクリプトが存在します。しかし、画面キャプチャを無効にするにはどうすればよいでしょうか? PrintScreen は特殊なキーで、keyCode のないキーなので、onkeydown は役に立ちません。しかし、考え方を変えて、ペーストボードから開始し、カーブを節約する戦略を採用する方がよいでしょう。コードは次のとおりです。
上記のコードは、100 ミリ秒ごとにペーストボードをクリアします。ページが読み込まれると、スクリプトの実行が自動的に開始されます。ただし、これには欠点があり、Web ページが最小化されているかどうかに関係なく、このウィンドウが開いている限り、コンピューター上のすべてのコピー操作を実行できません (ある意味、スクリプトはペーストボードをクリアし続けます)。期待通りの効果は得られましたが、やや物足りないです:(。
すべてのコントロールには onfocus イベントと onblur イベントがあることがわかっており、ウィンドウも例外ではありません。これら 2 つのイベントを使用することで、現在のコントロールがオンになったときにのみクリア操作を実行します。 window is active 、それ以外の場合は実行を停止します。 コードは次のとおりです:
これでこの問題は完全に解決できますが、スクリーンショットの内容をペーストボードに書き込まないスクリーンショット プログラムにはこの方法はまだ不十分です。
最新のテストでは、onfocus イベントと onblur イベントの使用方法が満足のいくものではないことが判明しました。フォーカスがプログラム ページ内の他のコントロール (Table であっても) を指すと、ウィンドウはフォーカスを失い、onblur イベントが停止します。ペーストボードのクリア コマンドを実行すると、onfocus と onblur のイベントをバインドするためにすべてのコントロールをトラバースする必要がありますか?
さらに、フォーカスがアドレス バーまたはメニューにある場合、window.onfocus はドキュメントの onfocus のみです。 onfocus も無効になります。このテキストは、半日 JS を勉強したことを記録するためにのみ使用します。
印刷を無効にするには、次のスタイル コードをプログラムに挿入するだけです (印刷されるページの内容は空白になります)。 ):
コピー、選択、右クリックメニューは禁止されています: