ホームページ > ウェブフロントエンド > jsチュートリアル > `window.close()` と `self.close()` が Chrome Windows を閉じられないのはなぜですか?

`window.close()` と `self.close()` が Chrome Windows を閉じられないのはなぜですか?

Linda Hamilton
リリース: 2024-12-18 03:43:10
オリジナル
1058 人が閲覧しました

Why Do `window.close()` and `self.close()` Fail to Close Chrome Windows?

Window.close と Self.close Chrome Windows を閉じるのに失敗する: 包括的な分析

window.close() または self.close の呼び出しJavaScript コード内の () を使用すると、Chrome でウィンドウを閉じることができない場合があります。この矛盾は、Chrome では、スクリプトで作成されたものでない限り、スクリプトがウィンドウを閉じることを禁止しているというよくある誤解から生じています。これは誤りですが、これらのメソッドは期待どおりに機能しない可能性があります。この記事では、根本的な理由を掘り下げ、考えられる解決策を検討します。

セキュリティ制限

最新のブラウザには、悪意のあるスクリプトがウィンドウを無差別に閉じることを防ぐセキュリティ対策が実装されています。 window.close() 仕様に従って、JavaScript は通常、同じスクリプトによって作成されていないウィンドウを閉じることは許可されていません。この制限は、セキュリティの悪用とユーザーの不便を抑制することを目的としています。

Firefox の実装

Firefox はこれらのセキュリティ ガイドラインを厳密に遵守し、スクリプトが開かれていないウィンドウを閉じることを明示的に禁止しています。スクリプト。 Greasemonkey/Tampermonkey スクリプトが Firefox で window.close() を使用しようとすると、次のエラー メッセージが表示されます。「スクリプトによって開かれていないウィンドウは、スクリプトによって閉じられない可能性があります。」

Chrome 実装

Chrome では、スクリプトで作成されていないウィンドウをスクリプトで閉じることができます。ただし、この例外は Greasemonkey や Tampermonkey などのユーザースクリプト コンテキストには適用されません。これらのコンテキストから window.close() を使用しようとすると、サイレントエラーが発生します。

回避策

Chrome 拡張機能と Firefox アドオンは、閉じるための信頼できるソリューションを提供します。 Windows では、ユーザー向けのハッキングな回避策がありますスクリプト:

Chrome:

  • 自己リダイレクトエクスプロイト: このエクスプロイトは、一般的には効果がなくなりました。ただし、閲覧履歴のない、新しく開いたタブに挿入されたコードでも動作する可能性があります。
  • @grant Window.Close メソッド: Tampermonkey スクリプトで @grant ディレクティブを使用すると、次のことが可能です。 window.close() 機能を有効にします。ただし、これは追加のタブに対してのみ機能し、最後に残ったタブに対しては機能しません。

Firefox:

  • セキュリティ設定を無効にする: about:config 設定のallow_scripts_to_close_windows を true に変更します。セキュリティ上の懸念があるため、これはお勧めできません。

長期的な解決策

最も信頼できるアプローチは、専用の Chrome 拡張機能または Firefox アドオンを作成することです。 window.close() を効果的に呼び出すことができます。あるいは、ユーザー スクリプト開発者は、組み込みのウ​​ィンドウを閉じる機能について Greasemonkey または Tampermonkey に機能リクエストを送信することを検討できます。

以上が`window.close()` と `self.close()` が Chrome Windows を閉じられないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート