Greasemonkey 스크립트의 jQuery – Firefox에서 클릭 이벤트가 발생하지 않습니까?

Slampisko

jQuery 1.6.3이있는 페이지에서 Greasemonkey 스크립트를 사용하여 마우스 클릭에 반응하는 링크를 얻으려고합니다.

흥미로운 부분은 다음과 같습니다.

// ==UserScript==
// […]
// @grant   GM_getValue
// @grant   GM_setValue
// @grant   GM_deleteValue
// @grant   unsafeWindow
// ==/UserScript==

if (typeof $ == 'undefined') {
  var $ = unsafeWindow.jQuery;
  if (typeof $ == 'undefined') {
    console.log('jQuery could not be loaded, script will not work.');
  }
}
[…]
document.addEventListener("DOMContentLoaded", function(event) {
  console.log('DOM content loaded.');

  if (settings.firstRun) {
    console.log('Creating welcome window.');
    var hi = $('<div>This is a welcome message. Click the OK link to hide it forever. </div>');
    var ok = $('<a href="javascript:void(0)" id="okay">OK</a>');
    hi.append(ok);
    // el is from earlier
    el.append(hi);
    console.log('Binding click event.');
    ok.click(function(event) { // DOES NOT WORK
      event.preventDefault();
      alert('you clicked OK');
    });
    console.log('Bound.');
  }
  […]
});

내 코드는 Tampermonkey / Chrome에서 제대로 작동하지만 (이벤트를 바인딩하기 전에 DOM에 요소를 삽입하지 않더라도) Greasemonkey / Firefox에서는 작동하지 않습니다.

이제 콘솔 메시지가 '바인딩 클릭 이벤트'까지 바로 가기 때문에 스크립트가 주입되고 jQuery가로드된다는 것을 알고 있습니다. 표시되고 요소가 DOM에 올바르게 삽입되고 있습니다. 그러나 스크립트는 클릭 바인딩에서 딸꾹질을하고 오류 메시지없이 실행을 중지합니다.

일반 JS를 사용할 때 작동합니다.

document.getElementById('okay').onclick = function(){ alert('you clicked OK'); };

Firebug 콘솔에서도 작동합니다.이 명령을 실행하면 올바른 결과가 생성됩니다.

$('#okay').click(function(){ alert('you clicked OK'); });

평범한 JS를 사용할 수는 있지만 일관성 수준을 유지하고 싶고 문제를 이해할 수 없다는 것도 짜증이납니다. 내가 무엇을 놓치고 있습니까?

브록 아담스

Firefox의 브라우저 콘솔 ( ControlShiftJ)을 보면 다음과 같은 오류가 표시됩니다.

오류 : 'handler'속성 jquery.min.js : 2에 대한 액세스 권한이 거부되었습니다.

이는 더 이상 페이지의 jQuery에 그런 방식으로 액세스 할 수 없기 때문 입니다 (완전히 "시간 폭탄"오류없이).

일반적으로 사용자 스크립트에 대해 @requirejQuery 를 사용하는 것이 가장 좋으며 모든 종류의 교활한 충돌 문제를 피하는 것이 @grant좋습니다 none. 특히 .


참고 :
을 사용하는 것은 의미가 없습니다 document.addEventListener("DOMContentLoaded" ....
을 설정하지 않으면 @run-at document-start스크립트는 기본적으로 jQuery가 준비된 시점에서 실행됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Greasemonkey 스크립트의 jQuery – Firefox에서 클릭 이벤트가 발생하지 않습니까?

분류에서Dev

JQuery-행 클릭 이벤트가 새로 추가 된 테이블 행에서 발생하지 않습니다.

분류에서Dev

링크의 클릭 이벤트가 jquery에서 작동하지 않습니다.

분류에서Dev

PHP 스크립트에서 반환 된 <ul>에 JQuery 클릭 이벤트가 등록되지 않습니다.

분류에서Dev

JS Fiddle jQuery 클릭 이벤트가 발생하지 않음

분류에서Dev

JQuery 클릭 이벤트가 경고를 발생하지 않음

분류에서Dev

Jest에 대해 "클릭"이벤트가 발생하지 않음

분류에서Dev

문서에서 jquery를 사용하여 클릭 이벤트 추적기를 추가 할 때 링크의 클릭 이벤트가 작동하지 않습니다.

분류에서Dev

이벤트 클릭 jquery가 backbone.js에서 작동하지 않습니다.

분류에서Dev

OKCallback / 클릭 이벤트가 부트 스트랩 대화 상자에서 발생하지 않습니다.

분류에서Dev

UL에서 jQuery Hover 이벤트가 발생하지 않습니까?

분류에서Dev

CKEditor의 클릭 이벤트가 발생하지 않습니다.

분류에서Dev

클릭 이벤트가 jquery에서 실행되지 않습니다.

분류에서Dev

jquery의 클릭 이벤트가 작동하지 않습니다.

분류에서Dev

jquery의 클릭 이벤트가 작동하지 않습니다.

분류에서Dev

클릭 이벤트에 대한 Jquery가 작동하지 않습니다.

분류에서Dev

IE11에서 클릭 이벤트가 발생하지 않음

분류에서Dev

Svelte 스크립트 버그 : 스위치 요소 클릭 이벤트가 발생하지 않습니다.

분류에서Dev

개발 콘솔에서 트리거 될 때 JQuery "클릭"이벤트가 실행되지 않습니다.

분류에서Dev

Word VSTO 추가 기능-클릭 이벤트가 발생하지 않습니까?

분류에서Dev

새로 추가 된 목록 항목을 클릭 할 때 jQuery 클릭 이벤트가 발생하지 않음

분류에서Dev

클릭 jquery 이벤트가 작동하지 않습니다.

분류에서Dev

div onclick에서 자바 스크립트 클릭 이벤트가 작동하지 않습니다.

분류에서Dev

클릭 이벤트에 jquery 추가 클래스가 작동하지 않습니다.

분류에서Dev

jquery 라디오 버튼이 첫 번째 클릭에서 이벤트를 발생시키지 않습니다.

분류에서Dev

jQuery 클릭 이벤트가 항상 발생하지 않는 원인은 무엇입니까?

분류에서Dev

jQuery Mobile을 사용하는 iOS 및 Android의 레이블 하위 요소에서 클릭 이벤트가 발생하지 않음

분류에서Dev

ReactJS 및 UIkit 3.6.5 : 모달 창 내에서 클릭 이벤트가 발생하지 않습니다.

분류에서Dev

<a>의 jQuery 클릭 이벤트가 두 번 발생합니다.

Related 관련 기사

  1. 1

    Greasemonkey 스크립트의 jQuery – Firefox에서 클릭 이벤트가 발생하지 않습니까?

  2. 2

    JQuery-행 클릭 이벤트가 새로 추가 된 테이블 행에서 발생하지 않습니다.

  3. 3

    링크의 클릭 이벤트가 jquery에서 작동하지 않습니다.

  4. 4

    PHP 스크립트에서 반환 된 <ul>에 JQuery 클릭 이벤트가 등록되지 않습니다.

  5. 5

    JS Fiddle jQuery 클릭 이벤트가 발생하지 않음

  6. 6

    JQuery 클릭 이벤트가 경고를 발생하지 않음

  7. 7

    Jest에 대해 "클릭"이벤트가 발생하지 않음

  8. 8

    문서에서 jquery를 사용하여 클릭 이벤트 추적기를 추가 할 때 링크의 클릭 이벤트가 작동하지 않습니다.

  9. 9

    이벤트 클릭 jquery가 backbone.js에서 작동하지 않습니다.

  10. 10

    OKCallback / 클릭 이벤트가 부트 스트랩 대화 상자에서 발생하지 않습니다.

  11. 11

    UL에서 jQuery Hover 이벤트가 발생하지 않습니까?

  12. 12

    CKEditor의 클릭 이벤트가 발생하지 않습니다.

  13. 13

    클릭 이벤트가 jquery에서 실행되지 않습니다.

  14. 14

    jquery의 클릭 이벤트가 작동하지 않습니다.

  15. 15

    jquery의 클릭 이벤트가 작동하지 않습니다.

  16. 16

    클릭 이벤트에 대한 Jquery가 작동하지 않습니다.

  17. 17

    IE11에서 클릭 이벤트가 발생하지 않음

  18. 18

    Svelte 스크립트 버그 : 스위치 요소 클릭 이벤트가 발생하지 않습니다.

  19. 19

    개발 콘솔에서 트리거 될 때 JQuery "클릭"이벤트가 실행되지 않습니다.

  20. 20

    Word VSTO 추가 기능-클릭 이벤트가 발생하지 않습니까?

  21. 21

    새로 추가 된 목록 항목을 클릭 할 때 jQuery 클릭 이벤트가 발생하지 않음

  22. 22

    클릭 jquery 이벤트가 작동하지 않습니다.

  23. 23

    div onclick에서 자바 스크립트 클릭 이벤트가 작동하지 않습니다.

  24. 24

    클릭 이벤트에 jquery 추가 클래스가 작동하지 않습니다.

  25. 25

    jquery 라디오 버튼이 첫 번째 클릭에서 이벤트를 발생시키지 않습니다.

  26. 26

    jQuery 클릭 이벤트가 항상 발생하지 않는 원인은 무엇입니까?

  27. 27

    jQuery Mobile을 사용하는 iOS 및 Android의 레이블 하위 요소에서 클릭 이벤트가 발생하지 않음

  28. 28

    ReactJS 및 UIkit 3.6.5 : 모달 창 내에서 클릭 이벤트가 발생하지 않습니다.

  29. 29

    <a>의 jQuery 클릭 이벤트가 두 번 발생합니다.

뜨겁다태그

보관