Avatar billede theselfimages Nybegynder
07. oktober 2003 - 20:37 Der er 45 kommentarer og
1 løsning

Problem med print content frame script

På dette site: www.cafebernhard.dk
(vælg /menu/brunch)

Denne Brunchmenu kan udskrives med nedenstående printscript, men hvorfor printes kun det tekst der vises på selve skærmbilledet og ikke al teksten?

<script>
function udskriv() {
if (window.print) {
parent.frames["tekst"].focus();
parent.frames["tekst"].print();
}
else {
l = (screen.width - 700) / 2;
t = (screen.height - 440) / 2;
window.open(parent.frames["tekst"].location.href, "printVindue", "width=700,height=440,left=" + l + ",top=" + t + ",toolbar=yes");
}
}
</script>
Avatar billede theselfimages Nybegynder
07. oktober 2003 - 21:35 #1
Sikkert fordi jeg bruger denne til at afgrænse tekstområdet med?

<div id="contentMask" style="position:absolute; left:29px; top:44px; width:400px; height:300px; clip:rect(0px,400px,300px,0px); overflow:hidden; z-index:5;">
<div id="content">

Hvad gør man så?
Avatar billede thesurfer Nybegynder
07. oktober 2003 - 22:43 #2
hvad nu hvis du lavede en lille popup med alt teksten i, aktiverede print funktionen og lukkede popup'en igen?
Avatar billede theselfimages Nybegynder
07. oktober 2003 - 22:48 #3
så skulle jeg ha' en seperat side kun med teksten til hvert menupunkt?
Avatar billede thesurfer Nybegynder
07. oktober 2003 - 22:49 #4
hmm.. hvad er de lige man skal klikke på..?
jeg har klikket på menu > brunch > print.. så dukker der et vindue op med indholdet, og så sker der ikke mere..?
Avatar billede thesurfer Nybegynder
07. oktober 2003 - 22:49 #5
det er som det skal være.. du skal bare aktivere print funktionen i den popup'en..
Avatar billede theselfimages Nybegynder
07. oktober 2003 - 22:52 #6
? Fatter ikke noget. Hvilken browser har du?
Hvad mener du med der dukker et vindue op?
Avatar billede thesurfer Nybegynder
07. oktober 2003 - 22:55 #7
jeg bruger Opera v7.20
der dukker et vinduet op med den tekst der er over på højreside af sitet..
skal jeg tage et screenshot?
Avatar billede theselfimages Nybegynder
07. oktober 2003 - 22:57 #8
Meget gerne..
Avatar billede theselfimages Nybegynder
07. oktober 2003 - 23:01 #9
Ahh! never mind! Har forstået det..
Det er en indbygget funktion i printscriptet henvendt til MAC (oprindeligt) og åbenbart også Opera, da IE på MAC ikke fatter selv at aktiverer udskriftfunktionen. Derfor kommer vinduet frem, hvorfra man så kan klikke menubarens eget printikon.

Men som du kan se, er det IKKE hele teksten (i forhold til al den tekst der kan scrolles i) der vises i vinduet. Netop fordi teksten er 'hidden' af DIV!
Avatar billede theselfimages Nybegynder
07. oktober 2003 - 23:03 #10
Vinduet skulle faktisk ha' denne størrelse:

<script>
function udskriv() {
if (window.print) {
parent.frames["tekst"].focus();
parent.frames["tekst"].print();
}
else {
l = (screen.width - 400) / 2;
t = (screen.height - 440) / 2;
window.open(parent.frames["tekst"].location.href, "printVindue", "width=400,height=440,left=" + l + ",top=" + t + ",toolbar=yes");
}
}
</script>

Hvordan tilføjer jeg en scrollbar i vinduet?
Avatar billede thesurfer Nybegynder
07. oktober 2003 - 23:06 #11
jeg mener det er: ,toolbar=yes,scrollbar=yes

men det hjælper nok ikke, da du stadig skal have teksten ud af div'en..
Avatar billede theselfimages Nybegynder
07. oktober 2003 - 23:07 #12
Hmm.. næhh! Nu er det vist mig der fucker lidt op her.
Det var en anden version af Printscriptet der lå uploaded. Nu popper den nemlig INTET vindue op ved Print i Opera. Men hvis script ser således ud, så gør den:

<script>
function udskriv() {

l = (screen.width - 400) / 2;
t = (screen.height - 440) / 2;
window.open(parent.frames["tekst"].location.href, "printVindue", "width=400,height=440,left=" + l + ",top=" + t + ",toolbar=yes");
}
</script>

Så skal den bare kunne vise al teskten... og vise en scrollbar også, så man kan scrolle i al denne tekst fra det vindue der popper op.
Avatar billede theselfimages Nybegynder
07. oktober 2003 - 23:15 #13
Hmm.. prøv at se popup vinduet nu! i Opera. Vinduets egen scrollbar er aktiveret nu, men man ser den ikke fordi man i stedet ser hele siden, inkl. Div scrollfunktion fra selve siden. Gak! Kan man ikke lave et eller andet smart med at den KUN viser et marked område fra siden.. ala

#Herfra

Bla bla bla... tekst

#Til her
Avatar billede thesurfer Nybegynder
07. oktober 2003 - 23:20 #14
jeg har ingen anelse hvad du snakker om.. popup vinduet har ikke forandret sig siden jeg først klikkede på print ikonet.. :)
måske er det pga Opera.. jeg har altid kunne resize vinduet, og scrollbaren har altid været der.
Avatar billede theselfimages Nybegynder
07. oktober 2003 - 23:28 #15
Prøv at refreshe siden. Og klik så på Printikonet. Du vil kunne se den viser hele siden med DIV scrollscript og det hele. Men kun det område DIV er sat til at vise som synligt.
Avatar billede thesurfer Nybegynder
07. oktober 2003 - 23:35 #16
det virker åbenbart kun i IE.. med Opera kan jeg resize og alt muligt
det du skal have gjort er at tage indholdet ud af div'en og fjerne den.. dine scrollbare skal ikke være der..
det nytter jo ikke at have scrollbars på et stykke papir :)
Avatar billede thesurfer Nybegynder
07. oktober 2003 - 23:36 #17
..det er jo hele pointen med en "printer venlig version" :)
Avatar billede theselfimages Nybegynder
07. oktober 2003 - 23:40 #18
Ja.. i know! men prøver du at printe Brunch teksten der er længere end hvad du kan se i vinduet, da kommer resten af teksten IKKE med ud på printet, da det er skjult af DIV layer.
Avatar billede thesurfer Nybegynder
07. oktober 2003 - 23:49 #19
jeg leder efter noget kode der kan hente tekst fra et div..
Avatar billede theselfimages Nybegynder
07. oktober 2003 - 23:51 #20
Ok!.. cool! Ellers må alternativet jo være at lægger al tekst i en database og så trække det ud derfra. Sådan gør jeg i forvejen med printfunktion på mit eget site (www.theselfimages.dk)
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 00:00 #21
siger du først nu?? :)
Avatar billede theselfimages Nybegynder
08. oktober 2003 - 00:07 #22
Ro på! Det er den sidste udvej.. og et stort arbejde. Hvis det kan lade sig gøre at "rede" denne printfunktion og tekst ud af DIV djævelens klør, så vil det da klart være at foretrække.
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 00:13 #23
ok.. hang on.. har muligvis fundet en løsning.. tester..
Avatar billede theselfimages Nybegynder
08. oktober 2003 - 00:24 #24
Blir nødt til at løbe i seng.. lad os lege videre i morgen.
Avatar billede roenving Novice
08. oktober 2003 - 00:54 #25
Hvad med noget

@print{clip:auto;}
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 12:10 #26
jeg ved ikke hvad @print{clip:auto;}.. måske ved han det..

men her er en anden mulighed:

print knappen åbner en popup med adressen på indholdet af iframen, og tilføjer "?print"
eksempel: window.open('brunch.asp?print').

der tjeckes så om "print" indgår i urlen på siden:

var a; // definer variable "a"
a = location.href; // en variabel "a" en værdi (urlen)

if (a.indexOf("print")!=-1) { // hvis "print" indgår
  // "print" indgår i urlen.. udfør dette:

  // udskriv indholdet af div'et med id'en "contenMask":
  document.write(document.getElementById('contentMask').innerHTML);

  // aktiver print funktionen:
  window.print();
}


det skal lige siges at linien a.indexOf("print")!=-1 sikkert kan skrives på en bedre måde

det kan være at der skal laves lidt om på koden :)
Avatar billede theselfimages Nybegynder
08. oktober 2003 - 13:23 #27
ROENVING => Hvad mener du?

THESURFRER =>
Jeg bruger ikke Iframes.. og er meninger så at jeg lave alle mine
sider om til at være ASP?

Du blir nødt til at uddybe lidt?
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 15:56 #28
nej, du skal ikke lave dem om til asp..
rettelse: side.htm?print
f.eks.: brunch.htm?print

som det er nu:
når du klikker på print-ikonet, udføres funktionen "udskriv()" som er:
window.open(parent.frames["tekst"].location.href, "printVindue", .....);

mit eksempel:
når du klikker på print-ikonet, udføres funktionen "udskriv()" bliver er:
window.open(parent.frames["tekst"].location.href + '?print', "printVindue", .....);

altså: parent.frames["tekst"].location.href + '?print'  (tilføjet: + '?print')

i din javascript tilføjer du:
---
var a; // definer variable "a"
a = location.href; // en variabel "a" en værdi (urlen)

if (a.indexOf("print")!=-1) { // hvis "print" indgår
  // "print" indgår i urlen.. udfør dette:

  // udskriv indholdet af div'et med id'en "contenMask":
  document.write(document.getElementById('contentMask').innerHTML);

  // aktiver print funktionen:
  window.print();
}
---

selve siden (popup'en) checker om "?print" indgår i dens egen url.. hvis den gør, udskriver den indholdet af div'et til sig selv og aktivere print-funktionen i browseren.

er det til at forstå? (jeg ved ikke om det kan forklares bedre..)
Avatar billede theselfimages Nybegynder
08. oktober 2003 - 21:11 #29
Øhh! sådan?

<script>
function udskriv() {
l = (screen.width - 500) / 2;
t = (screen.height - 440) / 2;
window.open(parent.frames["tekst"].location.href + '?print', "printVindue", "width=500,height=440,left=" + l + ",top=" + t + ",toolbar=yes, scrollbar=yes");
}
var a; // definer variable "a"
a = location.href; // en variabel "a" en værdi (urlen)

if (a.indexOf("print")!=-1) { // hvis "print" indgår
  // "print" indgår i urlen.. udfør dette:

  // udskriv indholdet af div'et med id'en "contenMask":
  document.write(document.getElementById('contentMask').innerHTML);

  // aktiver print funktionen:
  window.print();
}
</script>

Men er der nogen grund til at den popper et vindue op så?
Kan den ikke bare udskrive alt content indenfor contentMask, når printikonet klikkes?
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 21:13 #30
har du prøvet at se om det virker?
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 21:14 #31
så skal den udskrive indholdet, printe, og derefter loade siden uden "?print"-delen..
Avatar billede theselfimages Nybegynder
08. oktober 2003 - 21:20 #32
Hmm.. tja! det ser bare ikke særlig godt ud at den i popup vinduet viser teksten med rød scrollbar og den sorte linje helt ude tilhøjre. Hvis den blot kan vise teksten i det popud vindue, så ville det være cool. Men måske det netop er hvad dit script skulle gøre?
Jeg kan ikke få det til at virke...

hvad mener du her:
nej, du skal ikke lave dem om til asp..
rettelse: side.htm?print
f.eks.: brunch.htm?print

Og er dette rigtigt?

<script>
function udskriv() {

var a; // definer variable "a"
a = location.href; // en variabel "a" en værdi (urlen)

if (a.indexOf("print")!=-1) { // hvis "print" indgår
  // "print" indgår i urlen.. udfør dette:

  // udskriv indholdet af div'et med id'en "contenMask":
  document.write(document.getElementById('contentMask').innerHTML);

  // aktiver print funktionen:
  window.print();
 
l = (screen.width - 500) / 2;
t = (screen.height - 440) / 2;
window.open(parent.frames["tekst"].location.href + '?print', "printVindue", "width=500,height=440,left=" + l + ",top=" + t + ",toolbar=yes, scrollbar=yes");
}
}
</script>
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 21:27 #33
nej, det er forkert..

script fra "var a.." og til "..print()" skal du indsætte som den sidste del af dine scripts..

sæt det ind lige før:

    </script>

<style type="text/css">
body {background-color:#FFFFFF;}
Avatar billede theselfimages Nybegynder
08. oktober 2003 - 21:33 #34
Sådan? Ellers vis det venligst-- jeg famler i blinde

<script>
function udskriv() {
l = (screen.width - 500) / 2;
t = (screen.height - 440) / 2;
window.open(parent.frames["tekst"].location.href + '?print', "printVindue", "width=500,height=440,left=" + l + ",top=" + t + ",toolbar=yes, scrollbar=yes");
}
var a; // definer variable "a"
a = location.href; // en variabel "a" en værdi (urlen)

if (a.indexOf("print")!=-1) { // hvis "print" indgår
  // "print" indgår i urlen.. udfør dette:

  // udskriv indholdet af div'et med id'en "contenMask":
  document.write(document.getElementById('contentMask').innerHTML);

  // aktiver print funktionen:
  window.print();
}
</script>
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 21:35 #35
ja..
det skal nemlig ikke være i en funktion.. den skal bare checke når siden loades..
.. hvordan kan det være at din print knap ikke virker mere?
.. og på hvilken side sætter du det ind på?
Avatar billede theselfimages Nybegynder
08. oktober 2003 - 21:39 #36
Du blir altså nødt til at forklare dig noget bedre...

Hvor skal hvad sidde? Og hvordan skal det kaldes?
Hvad mener du med brunch.htm?print

Skal ovenstående script sidde på selve tekst siden?
Og hvad hvis der er flere forskellige sider der skal kunne printes?
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 21:45 #37
ok.. hang on..
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 21:59 #38
jeg går ud fra at du inkludere eksterne script filer (.js).. hvis du bare kopiere alt javascript kode ind på alle siderne, tager det for meget plads, plus at hvis du skal rette noget, skal du gøre ved hver eneste html fil.
så derfor, brug eksterne js filer.. og indsæt mit script nederest i js filen..
hvis du ikke ved det, så indeholder js filer kun selve koden, og ikke <scrip..> delen.. de inkluderes med <script language="JavaScript" src="kodefil.js"></script>..
jeg ved dog ikke om det kommer til at påvirke dine scrollbars.. prøv dig frem..

anyways.. nu har du har mit script inkluderet i den fil der vises, eksempelvis brunch.htm (eksempelvis, dvs kunne godt været enhver anden fil, "frokost.htm", "yomomma.htm" whatever)..
når du klikker på print knappen, åbnes et vindue med adressen der tilhører indholdet til højre i browseren.. f.eks. brunch.htm eller frokost.htm.. print knappen tilføjer "?print" til adressen..

dvs at alle filer for mit script inkluderet.. men det er kun sider hvor der er klikket på print knappen, der har "?print"..
script (der er inkluderet) checker om addressen indholder "?print".. hvis "?print" er der, udskrives indholdet af "contentMask" til browser vinduet (popup'en), og prinit-funktionen window.print() udføres..
Avatar billede theselfimages Nybegynder
08. oktober 2003 - 22:08 #39
hmm.. ok.. men selve printknappen ligger i en helt anden frame, end de sider der skal udskrives..

Den kan vel ikke bare se sådan her ud, hvis selve printscriptet ligger på alle de tekstmæssige sidder i en modstående frame?

<a href="#" onfocus="this.blur();" onClick="udskriv(); return false;"><img src="../images/common/print.gif" border="0" alt="Print siden" width="14" height="16"></a>
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 22:12 #40
denne linie:
window.open(parent.frames["tekst"].location.href + '?print', "printVindue"

åbner et vindue med navnet "printVindue", og med adressen fra framen "tekst" og tilføjer "?print"

dvs hvis "tekst" framens adresse er www.site.dk/fil.htm, så hentes "www.site.dk/fil.htm" og tilføjes "?print" hvilket giver adressen:
"www.site.dk/fil.htm?print"

man kan på den måde sige at adressen før "?print" er dynamisk, da den afhænger af siden der er loadet i den.. den er ikke statisk (dvs den samme hele tiden).
Avatar billede theselfimages Nybegynder
08. oktober 2003 - 22:21 #41
For fanden...

På alle sider med tekst der skal printes indsættes denne:
<script language="JavaScript" src="kodefil.js"></script>?

Den henter så dette script fra .JS filen
(uden <script>... og ...</script>)

function udskriv() {
l = (screen.width - 500) / 2;
t = (screen.height - 440) / 2;
window.open(parent.frames["tekst"].location.href + '?print', "printVindue", "width=500,height=440,left=" + l + ",top=" + t + ",toolbar=yes, scrollbar=yes");
}
var a; // definer variable "a"
a = location.href; // en variabel "a" en værdi (urlen)

if (a.indexOf("print")!=-1) { // hvis "print" indgår
  // "print" indgår i urlen.. udfør dette:

  // udskriv indholdet af div'et med id'en "contenMask":
  document.write(document.getElementById('contentMask').innerHTML);

  // aktiver print funktionen:
  window.print();
}

OG HVAD SÅ MED DEN LILLE SIDE HVOR PRINTIKONET SIDDER?

<a href="#" onfocus="this.blur();" onClick="udskriv(); return false;"><img src="../images/common/print.gif" border="0" alt="Print siden" width="14" height="16"></a>

Skal scripttet også sidde på den side? Eller noget af det?
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 22:30 #42
du bliver nød til at lære noget programmering..
at være designer alene kan ikke gøre det.. man skal også være programmør..
designers job er det synlige, og programmørens job, det usynlige..

hvis man kun kan designe, bliver det en pæn side, med manglende funktioner.
hvis man kun kan programmere, bliver det en funktionel side, med manglende grafik/layout..
man skal derfor kunne lidt af hvert..
det ville være godt hvis du kunne lære noget javascript.. det ville hjælpe en del.
Avatar billede theselfimages Nybegynder
08. oktober 2003 - 22:34 #43
Jaaaaah! jeg prøver jo.. at fatte det!
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 22:37 #44
ok.. så slapper vi lige af..
vi hopper over på icq.. vi skulle jo nødigt få et los i røven af admin for at spamme hans site :)
Avatar billede thesurfer Nybegynder
08. oktober 2003 - 22:37 #45
..eller messenger.. whatever..
Avatar billede theselfimages Nybegynder
14. oktober 2003 - 14:34 #46
thesurfer og undertegnede er kommet frem til en anden løsning.
Spørgsmålet lukkes.
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