Das Ereignis DOMContentLoaded wird bei einer einzelnen Seitenladung zweimal ausgelöst

8

Ich habe vor einigen Monaten ein Firefox-Add-on verfasst, das kürzlich gescheitert ist. Das Add-on sucht im Grunde nach einer bestimmten URL und ändert dann das DOM für die Seite. Ich habe den Fehler bis zur (versehentlichen) Installation des Add-Ons "AVG Safe Search" verfolgt. Ich habe festgestellt, dass das Ereignis DOMContentLoaded mit dem deaktivierten AVG-Add-On für das Dokument ausgelöst wird (Verhalten, das ich ursprünglich erwartet hatte). Bei aktiviertem Ereignis wird das Ereignis DOMContentLoaded jedoch zweimal für das Dokument ausgelöst. Mein Add-On fügt eine Spalte in eine HTML-Tabelle ein. Da das Ereignis zweimal ausgelöst wird, werden zwei doppelte Spalten anstelle von eins eingefügt.

Hier ist der destillierte Initialisierungscode meines Add-Ons:

%Vor%

Dieses Problem scheint leicht zu beheben, indem Sie ein eindeutiges DOM-Element einfügen und dann am Anfang testen, ob es existiert. Meine Frage ist, ob Add-On-Entwickler dieses Ereignisverhalten als normal erwarten oder ob dieses Problem hauptsächlich ein Bug / Nebeneffekt im AVG-Add-On ist?

    
Jeremy Giron 04.12.2010, 19:22
quelle

2 Antworten

3

Ich weiß nicht, ob ich das als "normal" bezeichnen würde, aber die Möglichkeiten für externe Anwendungen, den Betrieb Ihres Plugins zu beeinflussen, sind endlos.

Das heißt, ich denke, unabhängig davon, dass AVG diese Anomalie verursacht, ist es klug zu prüfen, ob die Spalte vor dem Einfügen vorhanden ist, da AVG möglicherweise nicht die einzige externe Anwendung ist, die die Auslöser für Firefox-Ereignisse beeinflusst .

Ich bin sehr müde von den DOM-getriebenen Ereignissen, weil in meinem eigenen Plugin und dem Testen während der Entwicklung PLENTY von Anomolien gezeigt hat, basierend auf so vielen Variablen (anderes Betriebssystem, unterschiedliche Version von FF, verschiedene Anwendungen auf dem Host-Computer, verschiedene Plugins innerhalb beliebiger Benutzer FF, etc ..)

  

Zusammenfassend:

     
  • Fehler in AVG? Vielleicht.
  •   
  • Besteht das Potenzial für Ihre Plugin-Leistung aus VIELEN anderen Quellen? Absolut!
  •   
  • Lösung : IMHO- Überprüfen Sie immer, ob Ihre Änderung vorgenommen wurde   bevor Sie die tatsächliche Änderung für alle DOM-Elemente vornehmen, nur um sicher zu sein.
  •   
    
Purge 20.12.2010, 16:11
quelle
1

Versuchen Sie, die bindReady-Methode von jquery zu lesen:

Ссылка

Sie werden finden:

%Vor%     
Martin Borthiry 20.12.2010 19:05
quelle