window.print() werkt niet in popup

Status
Niet open voor verdere reacties.

JeroenE

Terugkerende gebruiker
Lid geworden
20 mrt 2005
Berichten
1.950
Ik heb op mijn site een pagina met songteksten die elk appart afprintbaar moeten zijn.
Daarvoor heb ik een popup gemaakt met alleen de geselecteerde tekst die bij onLoad de pagina uitprint, alleen gebeurt er niets.
Het script ziet er als volgt uit :

PHP:
function printLyric() {
	var the_print = escape(document.getElementById("lyricTA").value);
	the_print = the_print.replace(/%0D%0A/g,"<br>");
	var h = 400;
	var w = 500;
	var winT = (screen.height - h) / 2;
	var winL = (screen.width - w) / 2;
	var windowProps = "height="+h+",width="+w+",left="+winL+",top="+winT+",scrollbars";
	var lyricHTML = "<html><head><title>" +
	document.getElementById("artistSelect")[document.getElementById("artistSelect").selectedIndex].text +
	" - " +
	document.getElementById("songSelect")[document.getElementById("songSelect").selectedIndex].text +
	"</title><meta  http-equiv='imageToolbar' content='no'>" +
	"<link href='../jemimaja.css' rel='stylesheet' type='text/css'>" +
	"<style>body{font-weight:bold}</style></head>" +
	"<body background='../Pictures/Tablebg.jpg' bgproperties='fixed' onLoad='javascript:window.print();'>" +
	"<p><h2>" + document.getElementById("artistSelect")[document.getElementById("artistSelect").selectedIndex].text + "</h2></p>" +
	"<p><h3>" + document.getElementById("songSelect")[document.getElementById("songSelect").selectedIndex].text + "</h3></p>" +
	unescape(the_print) +
	"</body></html>";
	lyricPrint = window.open("","lyricPrint",windowProps);
	lyricPrint.document.write(lyricHTML);
};
Doe ik het met een javascript in de body van da pagina, werkt het ook niet :

PHP:
function printLyric() {
	var the_print = escape(document.getElementById("lyricTA").value);
	the_print = the_print.replace(/%0D%0A/g,"<br>");
	var h = 400;
	var w = 500;
	var winT = (screen.height - h) / 2;
	var winL = (screen.width - w) / 2;
	var windowProps = "height="+h+",width="+w+",left="+winL+",top="+winT+",scrollbars";
	var lyricHTML = "<html><head><title>" +
	document.getElementById("artistSelect")[document.getElementById("artistSelect").selectedIndex].text +
	" - " +
	document.getElementById("songSelect")[document.getElementById("songSelect").selectedIndex].text +
	"</title><meta  http-equiv='imageToolbar' content='no'>" +
	"<link href='../jemimaja.css' rel='stylesheet' type='text/css'>" +
	"<style>body{font-weight:bold}</style></head>" +
	"<body background='../Pictures/Tablebg.jpg' bgproperties='fixed'>" +
	"<p><h2>" + document.getElementById("artistSelect")[document.getElementById("artistSelect").selectedIndex].text + "</h2></p>" +
	"<p><h3>" + document.getElementById("songSelect")[document.getElementById("songSelect").selectedIndex].text + "</h3></p>" +
	unescape(the_print) +
	"<script language='javascript'><!--" +
	"setTimeout('window.print();',5000);" +
	"--></script>" +
	"</body></html>";
	lyricPrint = window.open("","lyricPrint",windowProps);
	lyricPrint.document.write(lyricHTML);
};
Laat ik de knop die de popup opent zelf de pagina afprinten zonder een popup, dan werkt het wel.
Wat zit er mis.

Greetz : Jer:cool:en.
 
Laatst bewerkt:
Alleen nog .document.open(); & .close(); in je bovenste script zetten:

lyricPrint.document.open();
lyricPrint.document.write(lyricHTML);
lyricPrint.document.close();

en dan werkt 't: :)
PHP:
<script language="JavaScript">
function printLyric() { 
    var the_print = document.getElementById("lyricTA").value; 
    the_print = the_print.replace(/\r?\n/g,"<br>"); 
    var h = 400; 
    var w = 500; 
    var winT = (screen.height - h) / 2; 
    var winL = (screen.width - w) / 2; 
    var windowProps = "height="+h+",width="+w+",left="+winL+",top="+winT+",scrollbars"; 
    var lyricHTML = "<html><head><title>" + 
    document.getElementById("artistSelect")[document.getElementById("artistSelect").selectedIndex].text + 
    " - " + 
    document.getElementById("songSelect")[document.getElementById("songSelect").selectedIndex].text + 
    "</title><meta  http-equiv='imageToolbar' content='no'>" + 
    "<link href='../jemimaja.css' rel='stylesheet' type='text/css'>" + 
    "<style>body{font-weight:bold}</style></head>" + 
    "<body background='../Pictures/Tablebg.jpg' bgproperties='fixed' onLoad='window.print();'>" + 
    "<p><h2>" + document.getElementById("artistSelect")[document.getElementById("artistSelect").selectedIndex].text + "</h2></p>" + 
    "<p><h3>" + document.getElementById("songSelect")[document.getElementById("songSelect").selectedIndex].text + "</h3></p>" + 
    the_print + "</body></html>"; 
    lyricPrint = window.open("","lyricPrint",windowProps); 
    lyricPrint.document.open(); 
    lyricPrint.document.write(lyricHTML); 
    lyricPrint.document.close(); 
}; 
</script>

<select id="artistSelect">
 <option>k's Choice
 <option>Kraftwerk
</select>

<select id="songSelect">
 <option>God In My Bed
 <option selected>If You're Not Scared
 <option>Try to get some sleep
</select>

<br>

<textarea id="lyricTA" cols="48" rows=12" wrap="off">Outside it's raining, still you shine
How I've missed your trembling hands inside of mine
I've been away for ages, still you care
Do you count the Sundays when I'm there

Teach me how to watch this game
The way you see it through your magical frame
Time is ticking, try to see
That I am you and you are me

Don't deny that you're afraid to go
Don't deny that you want to cry
Look around and watch your children grow
I feel love in every sigh
If you're not scared, then why am I

Tell me stories, tell me more
Make me feel guilty for being bored
Tell me how to pick up things I've dropped
Please keep talking, never stop

Don't deny that you're afraid to go
Don't deny that you want to cry
Look around and watch your children grow
I feel love in every sigh
Pray for eternity to fly
Don't understand but how I try
If you're not scared, then why am I I feel love in every sigh
Pray for eternity to fly
Don't understand but how I try
If you're not scared, then why am I...</textarea>

<br>

<input type="button" onclick="printLyric();" value="Print Lyric">
(Bijlage)

Met the_print = the_print.replace(/\r?\n/g,"<br>"); is escapen / unescapen niet meer nodig, het ? (= optioneel: 0 of 1 maal) is voor Firefox, die gebruikt alleen \n.


Vr.Gr. Egel.
 

Bijlagen

  • printlyric.html.txt
    2,7 KB · Weergaven: 25
Laatst bewerkt:
Dit werkt weer een perfect, en was weer eens iets dat ik nog niet wist.
Voor al wie dit leest : Egel is de beste scripter van het moment. :thumb:

Greetz : Jer:cool:en.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan