2014-10-09 3 views
8

Für mein Greasemonkey-Skript gibt es einen Teil des Codes, der ausgeführt werden sollte, bevor die Seite geladen wird (@run-at document-start) und ein anderer Teil des Codes, der nach dem Laden des Dokuments ausgeführt werden sollte (@run-at document-end).
Ist das möglich?Wie bekomme ich ein Greasemonkey-Skript, das sowohl bei @ run-at document-start als auch bei @ run-at document-end ausgeführt wird?

  • 1. Teil des Skripts laufen
  • Seite geladen wird, Dokument fertig gestellt ist
  • 2. Teil des Skripts laufen

Ich möchte lieber nicht jQuery für diese.

Ich versuchte das onload Ereignis, aber es hat nicht funktioniert. Ich denke, das Ereignis kann nicht angehängt werden, wenn das Dokument noch nicht da ist?

window.document.onload = function(e){ 
    alert("document.onload"); 
} 

Antwort

15

Das gewünschte Ereignis ist DOMContentLoaded. Das ist auch nicht die Verwendung des load Ereignisses.

Hier ist ein komplettes Skript, das die verschiedenen Brennzeiten demonstriert:

// ==UserScript== 
// @name  _Show page start event timing 
// @include  http://YOUR_SERVER.COM/YOUR_PATH/* 
// @run-at  document-start 
// ==/UserScript== 
console.log ("==> Script start.", new Date()); 

// 1ST PART OF SCRIPT RUN GOES HERE. 
console.log ("==> 1st part of script run.", new Date()); 

document.addEventListener ("DOMContentLoaded", DOM_ContentReady); 
window.addEventListener ("load", pageFullyLoaded); 

function DOM_ContentReady() { 
    // 2ND PART OF SCRIPT RUN GOES HERE. 
    // This is the equivalent of @run-at document-end 
    console.log ("==> 2nd part of script run.", new Date()); 
} 

function pageFullyLoaded() { 
    console.log ("==> Page is fully loaded, including images.", new Date()); 
} 

console.log ("==> Script end.", new Date()); 

Typische Ergebnisse:

"==> Script start."       2014-10-09T01:53:49.323Z 
"==> 1st part of script run."     2014-10-09T01:53:49.323Z 
"==> Script end."        2014-10-09T01:53:49.323Z 
"==> 2nd part of script run."     2014-10-09T01:53:49.385Z 
"==> Page is fully loaded, including images." 2014-10-09T01:53:49.487Z 
Verwandte Themen