View Full Version : Denna kod öppnar ett fönster för mycket?
Daniel78
2001-07-05, 10:09
Hej, använder denna kod när jag ska skriva ut en rapport ifrån SQL Server o lite annat. Allting fungerar perfekt förutom att det öppnas ett "onödigt" nytt fönster med samma innehåll som redirecten gör! Varför?
<script>javascript:window.print();
self.location.href='mselect.asp';</script>
Det finns egentligen bara ett syntax-fel i koden, och det är javascript:. Detta använder du bara i länkar för att tala om att protokollet inte skall vara http/ftp, e.dyl. utan att det är ett javascript-uttryck. Innanför ett script-block skall det aldrig vara med. Det är mycket möjligt att det kan ge ett sådant fel i vissa webbläsare.
Sedan skulle det inte skada med lite fler attribut i <script>-taggen för att tala om vad det är för språk.
<script language="JavaScript" type="text/javascript">
window.print();
location.href="mselect.asp";
</script>
------------------
/ J
Erik Juhlin
2001-07-06, 06:49
Jag passar på att fråga dig Jojoxx som alltid är mån om läsare som inte stöder JavaScript varför du aldrig har med kommentar taggar?
Så här skulle jag ju skriva.. :)
<script language="JavaScript" type="text/javascript">
<!--
window.print();
location.href="mselect.asp";
//-->
</script>
------------------
/Erik
www.juhlin.nu (http://www.juhlin.nu/) /sk8files/ (http://www.juhlin.nu/sk8files/) /mp2d/ (http://www.juhlin.nu/mp2d/)
För det första så är det ett minimalt antal webbläsare som visar script-koden när de inte har stöd för JavaScript (någon tidig Netscape version). Lynx exempelvis har som bekant inte stöd för JavaScript, men visar för den skull inte script-koden.
Sedan är det väl oftast så att skulle användaren sitta med en sådan webbläsare så är faktumet att den visar script-koden det minsta problemet; ingenting fungerar då :) Annat vore det ju om sidan skulle fungera utan JavaScripten, och det bara användes för att förfina funktionaliteten.
<a href="sida.html" target="_blank" onClick="window.open('sida.html','myWin','top=5,left=5,width=400,heig ht=400); return false;">länk</a>
Här använder vi alltså JavaScript om det finns aktiverat för att öppna ett anpassat fönster. Finns det inte så öppnas det ändå, via html, i ett nytt fönster fast det inte är anpassat.
Men visst, det är inget fel i att sätta dit kommentarstaggarna. Fast det är ju ett kodmässigt skönhetsfel att blanda in html-element (kommentarstaggarna) i script-blocket :).
------------------
/ J
Daniel78
2001-07-09, 12:09
Nix, tyvärr fungerade det inte. Om jag får spekulera i något så verkar det som om "location.href" vill byta sidan lite för snabbt, alltså innan "window.print" funktionen är klar och detta resulterar i konstigt uppförande.
Jag har även en del "request.form" med i min asp kod och det verkar som om den information inte heller får tid att skrivas in i "html" koden.
Kan man inte göra något form av "onload.finish" så ska skriv funktionen aktiveras, likadant när skriv ut funktionen är klar så ska "location.href" aktiveras"?
MVH
Daniel
Nix, tyvärr fungerade det inte. Om jag får spekulera i något så verkar det som om "location.href" vill byta sidan lite för snabbt, alltså innan "window.print" funktionen är klar och detta resulterar i konstigt uppförande.
Ja, det är troligt. Här är ett alternativ;
window.print();
setTimeout('changeUrl("mselect.asp");',1000);
function changeUrl(URL){
alert("Klicka 'OK' efter att du skrivit ut sidan");
location.href=URL;
}
Jag har även en del "request.form" med i min asp kod och det verkar som om den information inte heller får tid att skrivas in i "html" koden.
ASP-koden bearbetas på servern innan sidan skickas till användaren, så det är inget du behöver tänka på vid klientsidan. (Mao, på klientsidan ser du inget av asp-koden, utan ser bara en genererad html-sida).
Kan man inte göra något form av "onload.finish" så ska skriv funktionen aktiveras, likadant när skriv ut funktionen är klar så ska "location.href" aktiveras"?
Jo, visst. Det är så onload-eventer fungerar. Det triggas alltså inte förrens hela sidan är laddad.
<body onLoad="printit();">
<script language="JavaScript" type="text/javascript">
function printit(){
window.print();
setTimeout('changeUrl("mselect.asp");',1000);
}
function changeUrl(URL){
alert("Klicka 'OK' efter att du skrivit ut sidan");
location.href=URL;
}
</script>
------------------
/ J
vBulletin® v3.8.6, Copyright ©2000-2013, Jelsoft Enterprises Ltd.