Monday, May 20, 2024
199
rated 0 times [  200] [ 1]  / answers: 1 / hits: 18710  / 10 Years ago, thu, october 9, 2014, 12:00:00

For my Greasemonkey script, there is part of the code that should run before the page is loaded (@run-at document-start) and another part of the code that should run after the document is loaded (@run-at document-end).

Is this possible?




  • 1st part of script run

  • page is loaded, document is ready

  • 2nd part of script run



I'd rather not use jQuery for this.



I tried the onload event but it didn't work. I think the event cannot be attached if the document is not there yet?



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

More From » greasemonkey

 Answers
76

The event you want is DOMContentLoaded. Also, that is not how to use the load event.



Here's a complete script that demonstrates the various firing times:



// ==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() );





Typical results:



==> 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

[#69189] Monday, October 6, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
addie

Total Points: 699
Total Questions: 89
Total Answers: 97

Location: Cayman Islands
Member since Fri, Mar 4, 2022
2 Years ago
;