Greasemonkey 1.0 출시 이후 많은 사용자가 jQuery를 사용하는 웹사이트와 상호 작용할 때 Greasemonkey 스크립트가 제대로 실행되지 않는 문제에 직면했습니다. . 이 충돌은 새로 도입된 @grant 코드에서 비롯됩니다.
충돌 이해:
Greasemonkey 1.0으로 업그레이드한 후 Greasemonkey 스크립트의 샌드박스 메커니즘이 근본적으로 변경되었습니다. 스크립트가 특정 API를 요청할 수 있도록 허용하는 @grant 코드는 이제 스크립트가 jQuery를 포함한 페이지 환경에 액세스하는 데 필요합니다. 그러나 웹사이트에 이미 jQuery가 있는 경우 버전 및 네임스페이스 충돌로 인해 충돌이 발생합니다.
문제 해결:
이 충돌을 해결하기 위한 수많은 시도가 있었습니다. 한 가지 권장되는 해결 방법은 다음을 활용하는 것입니다.
this.$ = this.jQuery = jQuery.noConflict(true);
그러나 이 접근 방식이 모든 경우에 호환성을 보장하는 것은 아닙니다. 더 효과적인 전략은 샌드박스를 복원하는 것입니다.
샌드박스 복원:
샌드박스를 복원하고 충돌을 완화하려면 Greasemonkey 스크립트의 메타데이터 블록을 편집하고 다음을 추가하세요. 행:
// @grant GM_addStyle // @grant GM.getValue // ==/UserScript==
이 @grant 지시문은 Greasemonkey 스크립트에서 일반적으로 사용되는 API를 지정합니다. 이를 포함하면 샌드박스가 다시 활성화되고 충돌이 해결됩니다.
추가 참고 사항:
이 샌드박스 복원 방법은 Tampermonkey 및 Violentmonkey와 같은 우수한 엔진과의 호환성을 보장합니다. jQuery 네임스페이스를 수정하는 것보다 더 안정적이고 신뢰할 수 있는 솔루션입니다.
위 내용은 버전 1.0으로 업그레이드한 후 Greasemonkey 스크립트가 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!