ホームページ >ウェブフロントエンド >jsチュートリアル >Chrome で「window.close()」が機能しないのはなぜですか?それを修正するにはどうすればよいですか?

Chrome で「window.close()」が機能しないのはなぜですか?それを修正するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-01 11:19:10818ブラウズ

Why Doesn't `window.close()` Work in Chrome, and How Can I Fix It?

Chrome で Window.close() が失敗する: セキュリティ対策

Web 開発の領域では、ウィンドウを呼び出すことが観察されています。 JavaScript の .close() または self.close() は、Chrome ブラウザーで対象のウィンドウを閉じることができなくなりました。この動作は、悪意のあるコードや迷惑なポップアップによってユーザーのブラウジング エクスペリエンスが損なわれるのを防ぐために Chrome によって実装された重要なセキュリティ対策に起因しています。

ウィンドウを閉じることは、主にこれらのウィンドウを生成したスクリプトに制限されます。 Chrome はこの原則を厳密に遵守しており、外部スクリプトによる任意のクローズを許可していません。ただし、このルールの注目すべき例外は作成者が生成した JavaScript にのみ適用され、同じスクリプトによって作成されたウィンドウを閉じることができます。

Firefox のより厳格な実装

Firefox一方、より厳格なポリシーを適用し、呼び出し元のスクリプトが window.open() を使用してウィンドウを明示的に作成しない限り、ウィンドウを閉じることを禁止します。 方法。この制限を回避しようとすると、Firefox ではエラー メッセージが表示されますが、Chrome ではサイレント エラーが選択されます。

Chrome ユーザー向けの緩和策

Chrome でこの課題に対処するには、 「自己リダイレクト」エクスプロイトは以前にも悪用されました。ただし、この手法はブラウザの現在のバージョンではほとんど効果がありません。それにもかかわらず、この戦略の修正版は、制約された一連の状況内で使用するために依然として実行可能である。明示的な @grant 認証を使用して Tampermonkey を使用することで、Chrome で追加のタブ (存在する場合) を閉じるために window.close() を引き続き利用できます。

Firefox ユーザーの場合、唯一の実行可能な解決策は、組み込みセキュリティを無効にすることです。ブラウザ内の設定。ただし、脆弱なブラウザ構成に関連してセキュリティ リスクが高まるため、この方法は強く推奨されません。

長期的な解決策と機能拡張

これを回避する最も効果的なアプローチ永続的な制限は、Chrome 拡張機能または Firefox アドオンを開発することです。これらのメカニズムは、信頼性の高いウィンドウ閉鎖機能を提供します。さらに、そのような機能を機能リクエストとして Greasemonkey と Tampermonkey のメンテナーに提案すると、ユーザースクリプト作成者にとってさらなる改善と実装の簡素化がもたらされる可能性があります。

以上がChrome で「window.close()」が機能しないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。