Próbuję napisać rozszerzenie chromowane, które wyłącza słuchaczy zdarzeń dla wszystkich elementów (myszki, kliknij, ...) Nie próbuję przepisać noscript, jest to tylko krok konfiguracji, którego potrzebuję.

Próbowałem $("body *).unbind() i .unbind("mouseover click") i .off() i .off("mouseover click") nie działa.

Co ja robię źle?

PS: Dobrze byłoby też wyłączyć cały kod JavaScript (pochodzący z samej strony) od uruchomienia na stronie i dopuścić tylko na mój kod wstrzyknięty

2
WindowsMaker 20 listopad 2013, 04:50

3 odpowiedzi

Najlepsza odpowiedź

Nie jest to kompletny przykład, ponieważ nie zrobię całej swojej pracy dla Ciebie, ale może prowadzić do właściwego kierunku:

function preventAll(){
  var dom = document.getElementsByTagName('*');
  var km = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseover', 'mouseout', 'mouseup', 'mouseenter', 'mouseleave', 'keydown', 'keypress', 'keyup'];
  for(var i=0,l=dom.length; i<l; i++){
    for(var n=0,c=km.length; n<c; n++){
      dom[i]['on'+km[n]] = function(e){
        e = e || event;
        e.preventDefault();
        return false;
      }
    }
  }
  var fr = frames;
  for(var i=0,l=fr.length; i<l; i++){
    // cancell frames events here
  }
}
2
StackSlave 20 listopad 2013, 01:28

Nie można przechwycić ani wymieniania wszystkich wcześniejszych wydarzeń w JavaScript. Jednak wygląda podobnie jak wtyczki Chrome (w przeciwieństwie do domu w ogóle) mieć interfejs API do manipulowania, jak działa JavaScript.

1
Community 23 maj 2017, 12:24

Jeśli masz wydarzenia wykonane przez jQuery, jak mówisz, utrzymuje się wokół danych, które można wymyślić. Możesz zobaczyć, jak doskonała Wydarzenia wizualne robi to jako bardziej ogólne Rozwiązanie (tj. Przedłużanie chromowane).

1
Amadan 20 listopad 2013, 01:08