>웹 프론트엔드 >JS 튜토리얼 >Chrome에서 `window.close()`가 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있나요?

Chrome에서 `window.close()`가 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2025-01-01 11:19:10815검색

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

Chrome에서 Window.close() 실패: 보안 조치

웹 개발 영역에서 window를 호출하는 것이 관찰되었습니다. JavaScript의 .close() 또는 self.close()가 Chrome 브라우저에서 대상 창을 닫는 것을 중단했습니다. 이 동작은 악성 코드와 원치 않는 팝업이 사용자의 탐색 환경을 손상시키는 것을 방지하기 위해 Chrome에서 구현한 중요한 보안 조치에서 비롯됩니다.

창 닫기는 주로 이러한 창을 생성한 스크립트로 제한됩니다. Chrome은 이 원칙을 엄격하게 준수하여 외부 스크립트에 의한 임의 종료를 허용하지 않습니다. 그러나 이 규칙의 주목할만한 예외는 작성자가 생성한 JavaScript에만 적용 가능하며 동일한 스크립트로 생성된 창을 닫을 수 있습니다.

Firefox의 더 엄격한 구현

Firefox 반면, 호출 스크립트가 window.open() 메서드를 사용하여 창을 명시적으로 생성하지 않는 한 창 닫기를 금지하는 더 엄격한 정책을 시행합니다. 이 제한을 우회하려고 시도하면 Firefox에 오류 메시지가 표시되는 반면 Chrome은 자동 실패를 선택합니다.

Chrome 사용자를 위한 완화 방법

Chrome에서 이 문제를 해결하려면, "자체 리디렉션" 악용은 이전에 악용되었습니다. 그러나 이 기술은 현재 버전의 브라우저에서는 거의 효과적이지 않습니다. 그럼에도 불구하고 전략의 수정된 버전은 제한된 상황에서 사용할 수 있습니다. 명시적인 @grant 인증으로 Tampermonkey를 사용하면 window.close()를 계속 활용하여 Chrome에서 추가 탭(있는 경우)을 닫을 수 있습니다.

Firefox 사용자의 경우 실행 가능한 유일한 솔루션은 내장 보안을 비활성화하는 것입니다. 브라우저 내 설정. 그러나 이 방법은 브라우저 구성의 약화로 인한 보안 위험 증가로 인해 권장되지 않습니다.

장기적 솔루션 및 개선 사항

이를 우회하는 가장 효과적인 접근 방식 영구적인 제한은 Chrome 확장 프로그램이나 Firefox 추가 기능을 개발하는 것입니다. 이러한 메커니즘은 안정적인 창 닫기 기능을 제공합니다. 또한 Greasemonkey 및 Tampermonkey의 관리자에게 기능 요청과 같은 기능을 제안하면 사용자 스크립트 작성자가 더욱 개선되고 구현이 단순화될 수 있습니다.

위 내용은 Chrome에서 `window.close()`가 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.