Avatar billede mekaniker Nybegynder
20. oktober 2002 - 18:04 Der er 6 kommentarer og
2 løsninger

Print funktion

Er der nogle som kan hjælpe mig med at bygge en printfunktion...?

Jeg har en side, hvor jeg viser en opskrift som indeholder nogle forskellige ingredienser.
Siden er en asp side, så indholdet kan skifte.!

Jeg kunne godt tænke mig noget med at man trykkede på en knap hvorved et popupvindue åbnede og indholdet blev printet automatisk, og vinduet blev lukket igen efter printningen.

Jeg har sidet og læst nogle spørgsmål omkring print, her på eksperten. Så vidt jeg har forstået er det ikke alle ældre browsere og mac der understøtte denne window.print() funktion.
Derfor tænkte jeg at man måske for disse browsere bare kunne åbne popup'en med menu, så disse brugere selv kunne trykke print.

//Mekaniker
Avatar billede fiskesuppe Nybegynder
20. oktober 2002 - 18:13 #1
Du kan nederst i hver artikel have et link der hedder "Print opskrift".

Og koden i popup-vinduet kan så se således ud:



<HTML>
<HEAD><TITLE>Print Opskrift</TITLE>

<SCRIPT language=JavaScript>
DA = (document.all) ? 1 : 0

function StartPrint() {
  if(DA)
    print();
  else
    window.print();
}             

   
function handle_error() {
  alert("Der blev ikke printet noget.")
  return true;
}       
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
sub window_onunload
  on error resume next
  set WB = nothing
end sub

sub print
  OLECMDID_PRINT = 6
  OLECMDEXECOPT_DONTPROMPTUSER = 2
  OLECMDEXECOPT_PROMPTUSER = 1
  on error resume next
  if DA then
    call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER)
    else
      call WB.IOleCommandTarget.Exec(OLECMDID_PRINT ,OLECMDEXECOPT_DONTPROMPTUSER,"","")
  end if
  if err.number <> 0 then
    if DA then
      alert "Intet printet"
      else
    end if
  end if
end sub

if DA then
  wbvers="8856F961-340A-11D0-A96B-00C04FD705A2"
  else
    wbvers="EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B"
end if
document.write  "<OBJECT ID=""WB"" WIDTH=0 HEIGHT=0 CLASSID=""CLSID:"
document.write wbvers & """> </OBJECT>"
</SCRIPT>
</HEAD>

<BODY onLoad="StartPrint();">
...
</BODY>
</HTML>
Avatar billede hells Nybegynder
20. oktober 2002 - 18:17 #2
der er vel ikke rigtig nogen grund til at bruge popup-vinduer. Hvis det er til at styre hvad der bliver skrevet ud, kan du i stedet bruge css:
http://www.html.dk/artikler/00009/

så kan du lave en knap til print:
<input type="button" value="Print" onclick="window.print()" />
og i ældre browsere kan folk jo så bare udskrive vha. menu eller værktøjslinie.
Avatar billede mekaniker Nybegynder
20. oktober 2002 - 20:15 #3
>> Fiskesuppe

Kan du ikke forklare hvad al den kode gør, i forhold til bare at lave denne body..??

<body onload='window.print();window.close();'>
Avatar billede fiskesuppe Nybegynder
20. oktober 2002 - 20:36 #4
mekaniker -> Hehe, nej jeg kan ikke forklare helt præcis hvad koden gør. Den første del:


<SCRIPT language=JavaScript>
DA = (document.all) ? 1 : 0

function StartPrint() {
  if(DA)
    print();
  else
    window.print();


undersøger om brugeren har Netscape eller Internet Explorer og hvis han har Netscape så gælder koden print(); og ellers gælder koden window.print(); i alle andre browsere. Men hvad hele resten af koden gør har jeg ingen anelse om. Jeg så bare det stod i en hjemmesides kildekode... Men jeg tror da også sagtens du bare kan nøjes med window.print(); men undersøg lige først om det virker i Netscape, det er jeg nemlig ikke sikker på at det gør - i hvert fald ikke i alle versioner af Netscape.
Avatar billede 1409 Praktikant
21. oktober 2002 - 12:38 #5
<body onLoad="window.print()"> virker i NS 6.2.
Avatar billede jpv Nybegynder
04. november 2002 - 17:15 #6
Prøv om denne her virker

<HEAD>-koden:

<SCRIPT Language="Javascript">
function printit(){
if (NS)
{
window.print() ;
}
else
{
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
WebBrowser1.ExecWB(6, 2);
}
}
</script>


Eksempel på knap (<BODY>-koden):

<SCRIPT Language="Javascript">
var NS = (navigator.appName == "Netscape");
var VERSION = parseInt(navigator.appVersion);
if (VERSION > 3) {
document.write('<form><input type=button value="Udskriv denne side" name="Print" onClick="printit()"></form>');
}
</script>
Avatar billede jpv Nybegynder
07. november 2002 - 22:20 #7
Den virker sku
Avatar billede mekaniker Nybegynder
11. november 2002 - 13:07 #8
Jeg har læst mig til, at dette skulle virke både i netscape, og IE.

Det virker ihvertfald i IE, jeg har ikke prøvet det i NS.

<BODY onload='self.print();self.focus();window.close();'>

Men jeg synes i skal have nogle point for ulejligheden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester