Greasemonkey 1.0의 jQuery Sandbox 충돌:
Greasemonkey 1.0의 도입으로 샌드박스 메커니즘이 크게 변경되어 플랫폼과 Greasemonkey를 사용하는 웹사이트의 jQuery 버전 scripts.
샌드박스 동작을 수정하는 새로운 @grant 코드로 인해 충돌이 발생합니다. 이로 인해 페이지 자체 jQuery 인스턴스의 간섭으로 인해 @require 메타데이터에서 jQuery를 사용하는 스크립트가 오작동하게 되었습니다.
충돌 해결:
Greasemonkey의 공식 문서에 따르면 this.$ = this.jQuery = jQuery.noConflect(true)와 관련된 해결 방법입니다. 그러나 이 솔루션은 모든 경우에 효과적으로 작동하지 않을 수 있으며 코딩 원칙을 손상시킬 수 있습니다.
더 최적의 솔루션에는 샌드박스 메커니즘을 다시 구현하는 것이 포함됩니다. 이는 Greasemonkey 스크립트의 메타데이터 블록에 @grant 값(없음 제외)을 지정하여 달성할 수 있습니다.
메타데이터 블록 예시:
// @grant GM_addStyle // @grant GM.getValue // ==/UserScript== /*- The @grant directive is needed to work around a design flaws introduced in GM 1.0 and again in GM 4.0. It restores the sandbox. */
By 샌드박스를 복원하면 서로 다른 jQuery 인스턴스 간의 충돌이 해결되고 스크립트는 Tampermonkey 및 같은 우수한 엔진과의 호환성을 다시 얻습니다. 폭력몽키.
위 내용은 Greasemonkey 1.0에서 jQuery Sandbox 충돌을 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!