tags:

views:

58

answers:

5

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>
+2  A: 

"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.

Andy E
Wow thats a new one!!
joe
+4  A: 

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

var _print = window.print;
window.print = function() {
  alert("Hi!");
  // do stuff
  _print();
}
Josh Stodola
I could've swore i tried that. That works perfectly though! Thanks!
joe
Awww, beat me to the punch! +1.
Pekka
@joe No problem, welcome to Stack Overflow! To "accept" this as the answer, you can click the checkmark under the vote down-arrow.
Josh Stodola
@Josh: not for another 5 minutes he can't :-)
Andy E
@Andy Haha good point ;)
Josh Stodola
A: 

Try putting another <script> tag before the one you don't have access to eg:

<html><head></head><body></body><script>alert('Hello There !');</script><script>window.print();</script></html>
Sarfraz
A: 

The above doesnt work, tested in FF

Bob
Use comments for statements like this
palswim
A: 

The chosen answer does not work in chrome.

Arlo Carreon
Use the Comments section of that answer
palswim
I don't see the "Add Comment" link for above answers. Maybe because they are old answers?
Arlo Carreon