Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Executing function before page gets to window.print()

Tags:

javascript

I have a page that calls window.print(); at the bottom of the page. I have no way of accessing the code around window.print(); Its generated by the server and I can't touch it. Basically because of IE I need to execute a bit of javascript before the print dialog comes up but after the page has loaded. I can't do this because as soon as it gets to window.print(); the print dialog comes up. I still need to print but first I need to run myFunction() then I can window.print();

<html><head></head><body></body><!--no access from here--><script>window.print();</script></html>
like image 305
joe Avatar asked Jul 21 '10 21:07

joe


2 Answers

You should be able to override it like so...

var _print = window.print;
window.print = function() {
  alert("Hi!");
  // do stuff
  _print();
}
like image 96
Josh Stodola Avatar answered Nov 11 '22 15:11

Josh Stodola


"Basically because of IE I need to..."

If you only need support for IE, see the onbeforeprint event.

window.onbeforeprint = function () {
    // some code    
}

The benefit here is that the code will not run in browsers that don't support onbeforeprint, which is pretty much every browser except IE.

like image 25
Andy E Avatar answered Nov 11 '22 15:11

Andy E