82

Is there anyway to automatically run javascript:window.print() when the page finishes loading?

6 Answers 6

146

<body onload="window.print()"> or window.onload = function() { window.print(); }

Sign up to request clarification or add additional context in comments.

4 Comments

The second variation is the preferred method.
Why not window.onload = window.print;
@elipoultorak not this case specifically, but some calls for native functions that are not direct are causing "Illegal invocation" error, so this is generally discouraged so not used as much :)
@elipoultorak @jave.web window.onload = window.print.bind(); ;)
21

The following code must be put at the end of your HTML file so that once the content has loaded, the script will be executed and the window will print.

<script type="text/javascript">
<!--
window.print();
//-->
</script>

2 Comments

better to use <script type="text/javascript"> rather than using the deprecated language attribute.
If that's not in the end of the HTML it will start the printing process before the page is loaded.
8

Add the following code in your HTML page, and it will show print preview on page load.

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>

<script type="text/javascript">

$(document).ready(function () {
    window.print();
});

</script>

Comments

6

Use this script

 <script type="text/javascript">
      window.onload = function() { window.print(); }
 </script>

Comments

1

For me, adding <script>window.print();</script> to the end of the page worked.


I didn't need the type="text/javascript" attribute, or even for the page to be wrapped in a <body> tag. However, all of my previous attempts to intuitively use the answers suggested here, of just writing window.onload=window.print or longer versions such as window.onload=()=>window.print(); did not work, and of course calling print on the newly created window does not wait for the contents to load.

Comments

1

If what you want is to open a separate window from the web browser you can use this:

  window.open(basePath + "Controller/Route/?ID=" + param, '_blank').print();

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.