You are here: irt.org | FAQ | JavaScript | Print | Q993 [ previous next ]
Only by loading a framset with all four pages loaded - with the onLoad event handler in the frameset using the window print method to print each frame:
<form> <input type="button" onClick="if (window.print) location.href='printframeset.htm'"> </form>
And then in printframeset.htm:
<html>
<head>
<script language="JavaScript"><!--
function printAll() {
for (var i=0;i<frames.length;i++)
if (window.print)
frames[i].print();
}
//--></script>
</head>
<frameset onLoad="printAll()" rows="*,*,*">
<frame src="apage.htm">
<frame src="anotherpage.htm">
<frame src="yetanotherpage.htm">
</frameset>
</html>The previous script has been reported not to work on some platforms (it works perfectly on Netscape Navigator 4.7 on Linux). I assume on some platforms only one print dialogue box at a time can be opened. It might be possible to overcome this with a setTimout, but its going to be difficult to know when to start another one. A set delay of, say, 5 seconds might be too short if the user doesn't hit the print button. Anyway try:
<html>
<head>
<script language="JavaScript"><!--
function printAll() {
for (var i=0;i<frames.length;i++)
if (window.print)
setTimeout('frames[' + i + '].print()',5000 * i);
}
//--></script>
</head>
<frameset onLoad="printAll()" rows="*,*,*">
<frame src="apage.htm">
<frame src="anotherpage.htm">
<frame src="yetanotherpage.htm">
</frameset>
</html>