En spørring som dukker opp mye i de forskjellige Javascript-forumene, spør hvordan du kan sende siden direkte til skriveren uten først å vise skriv ut dialogboks.
Heller enn å bare fortelle deg det det kan ikke gjøres kanskje en forklaring på hvorfor et slikt alternativ ikke er mulig vil være mer nyttig.
Hvilken utskriftsdialogboks som vises når noen trykker på utskriftsknapp i nettleseren deres eller Javascript window.print () metoden kjører avhenger av operativsystemet og hvilke skrivere som er installert på datamaskinen.
Som de fleste kjører Windows på datamaskinen, la oss først beskrive hvordan utskriftsoppsettet fungerer på det operativsystemet. Operativsystemene * nix og Mac skiller seg litt ut i detaljene, men samlet sett er de samme.
Print dialog
Det er to deler til utskriftsdialogboksen på Windows. Den første av disse er en del av Windows API (Application Programming Interface). APIen er et sett med vanlige kodestykker som er lagret i de forskjellige DLL (Dynamic Link Library) filer som er en del av Windows
operativsystem. Et hvilket som helst Windows-program kan (og bør) ringe API for å utføre vanlige funksjoner, for eksempel å vise Print Dialog-boksen slik at det blir det fungerer på samme måte i alle programmer og ikke ha forskjellige alternativer på forskjellige steder slik utskriftsalternativet gjorde i DOS-programmet dager. Print Dialog API gir også et felles grensesnitt som lar alle programmer få tilgang til det samme settet med skriverdrivere enn skriverprodusenter som måtte lage driverprogramvare for skriveren sin for hvert enkelt program som ønsket å bruke den.Skriverdriverne er den andre halvparten av utskriftsdialogen. Det er flere forskjellige språk som forskjellige skrivere forstår at de bruker for å kontrollere hvordan siden skrives ut (f.eks. PCL5 og Postscript). Skriverdriveren instruerer Print API om hvordan du oversetter standard internt utskriftsformat at operativsystemet forstår det tilpassede merkespråket som den spesifikke skriveren forstår. Den justerer også alternativene som dialogboksen Skriv ut viser for å gjenspeile alternativene som tilbys av den spesifikke skriveren.
Bruke skriveren
En individuell datamaskin har kanskje ingen skrivere installert, den kan ha en lokal skriver, den kan ha tilgang til flere skrivere over et nettverk, kan det til og med være satt opp til å skrive ut til PDF eller forhåndsformatet utskrift fil. Der mer enn en "skriver" er definert, er en av dem utpekt som standardskriver, noe som betyr at det er den som viser detaljene i utskriftsdialogen når den først vises.
Operativsystemet holder rede på standardskriveren og identifiserer skriveren til de forskjellige programmene på datamaskinen. Dette gjør det mulig for programmene å gi en ekstra parameter til utskrifts-API-en, der den forteller at den skal skrives direkte til standardskriveren uten å vise utskriftsdialogen først. Mange programmer har to forskjellige utskriftsalternativer - en menypost som viser utskriftsdialogen og en hurtigutskriftsknapp for verktøylinjen som sender direkte til standardskriveren.
Når du har en webside på internett som besøkende skal skrive ut, har du nesten ingen informasjon om hvilke skrivere de har tilgjengelige. De fleste skrivere over hele verden er konfigurert til å skrive ut på A4-papir, men du kan ikke garantere at skriveren er konfigurert til standard. Et nordamerikansk land bruker en ikke-standard papirstørrelse som er kortere og bredere enn A4. De fleste skrivere er satt opp til å skrive ut i stående modus (der den smalere retningen er bredden, men noen kan være satt til landskapet der lengre dimensjon er bredden. Hver skriver har selvfølgelig også forskjellige standardmarginer på toppen, bunnen og sidene av siden før eierne går inn og endrer alle innstillingene for å få skriveren slik de er ønsker.
Gitt alle disse faktorene, har du ingen måte å si om standardskriveren med standardkonfigurasjonen vil skrive ut nettet ditt side på A3 med ubetydelige marginer eller på A5 med enorme marginer (etterlater lite mer enn et frimerkestørrelse midt i midten side). Du kan antagelig anta at de fleste vil ha et utskriftsområde på siden på omtrent 16 cm x 25 cm (pluss eller minus 80%).
Utskriftsbehov
Siden skrivere varierer så mye mellom potensielle besøkende (nevnte noen laserskrivere, blekkskrivere, farger eller svart-hvitt bare, fotokvalitet, utkastmodus og mye mer) har du ingen måte å fortelle hva de trenger å gjøre for å skrive ut siden din på en rimelig måte format. kanskje har de en egen skriver eller en annen driver for den samme skriveren som gir helt andre innstillinger spesielt for websider.
Deretter kommer saken om hva de måtte ønske å trykke. Vil de ha hele siden, eller har de valgt bare en del av siden de vil skrive ut? Hvis nettstedet ditt bruker rammer, ønsker de å skrive ut alle rammene slik de vises på siden, vil de skrive ut hver ramme hver for seg, eller vil de bare skrive ut en bestemt ramme?
Behovet for å svare på alle disse spørsmålene gjør det omtrent viktig at utskriftsdialogen vises når de måtte være ønsker å skrive ut noe slik at de kan sørge for at innstillingene stemmer før de trykker knapp. De fleste nettlesere gir også muligheten til å legge til en "rask utskrift" -knapp til en av nettleserens verktøylinjer for å tillate det siden som skal skrives ut til standardskriveren ved å bruke standard nettleserinnstillinger for hva som skal skrives ut og hvordan.
Javascript
Nettlesere gjør ikke dette mangfoldet av nettleser- og skriverinnstillinger tilgjengelige for Javascript. Javascript er først og fremst opptatt av å endre strømmen nettside og nettlesere gir så minimal informasjon om selve nettleseren og nesten ingen informasjon om operativsystemet tilgjengelig for Javascript fordi Javascript ikke trenger å vite disse tingene for å utføre de tingene som Javascript er ment å gjøre.
Grunnleggende sikkerhet sier at hvis noe som Javascript ikke trenger å vite om operativsystemet og nettleserkonfigurasjon for å manipulere websiden, bør den ikke være utstyrt med det informasjon. Det er ikke som Javascript burde være i stand til å endre skriverinnstillingene til passende verdier for å skrive ut den aktuelle siden fordi det ikke er det Javascript er til for - det er jobben med utskriften dialogboksen. Nettlesere gjør derfor bare tilgjengelig for Javascript de tingene som Javascript trenger å vite, for eksempel størrelsen på skjermen, tilgjengelig plass i nettleservinduet for å vise siden og lignende ting som hjelper Javascript med å finne ut hvordan siden er lagt ut. Den nåværende websiden er Javascript's eneste bekymring.
intranett
Intranett er selvfølgelig en helt annen sak. Med et intranett, vet du at alle sammen tilgang til siden bruker en spesifikk nettleser (vanligvis en nyere versjon av Internet Explorer) og har en spesifikk skjermoppløsning og tilgang til spesifikke skrivere. Dette betyr at det er fornuftig på et intranett å kunne skrive ut direkte til skriveren uten viser utskriftsdialogen fordi personen som skriver nettsiden vet hvilken skriver den vil være trykt på.
Internet Explorer-erstatteren for Javascript (kalt JScript) har derfor litt mer informasjon om nettleseren og operativsystemet som Javascript selv gjør. De enkelte datamaskinene i nettverket som kjører intranettet kan være i stand til å konfigureres slik at JScript tillates window.print () kommando skriv direkte til skriveren uten å vise utskriftsdialogen. Denne konfigurasjonen må konfigureres individuelt på hver klientdatamaskin og er langt utenfor omfanget av en artikkel om Javascript.
Når det gjelder websider på internett er det absolutt ingen måte du kan sette opp en Javascript-kommando å sende direkte til standardskriveren. Hvis de besøkende ønsker å gjøre det, må de sette opp sin egen "fast print" -knapp på nettleserens verktøylinje.