Avatar billede pyroman Nybegynder
22. juni 2004 - 15:55 Der er 15 kommentarer og
1 løsning

print nyt vindue i IE

Howdy

Jeg er ved at lave en print-funktion, der kun skal printe teksten ud, ikke hele siden...

Jeg har deror lavet denne funktion:



function printText(title, header, text1, text2, w, h){
  printwin = window.open("","txt","width="+w+",height="+h);
  printwin.document.writeln("<html><head><title>"+title+" - "+header+"</title></head><body>");
  printwin.document.writeln("<p align='left'><table width='100%'><tbody valign='top'");
  printwin.document.writeln("<tr><td><h4>"+header+"</h4><br></td></tr>");
  printwin.document.writeln("<tr><td>"+text1+"</td><td>"+text2+"</td></tr>");
  printwin.document.writeln("</tbody></table></p></body></html>");
  printwin.print();
  printwin.close();
}


Dette virker tiptoptrafik i Mozilla, men i IE viser den aldrig print-dialogen

Jeg har fundet ud af at det er fordi man skriver i det nyåbnede vindue at den fejler - hvis man bare åbner et blankt vindue og printer dette, så virker det fint...

Hvad kan man gøre ved det?

/Filip
Avatar billede roenving Novice
22. juni 2004 - 16:05 #1
function printText(title, header, text1, text2, w, h){
  printwin = window.open("","txt","width="+w+",height="+h);
  printwin.document.writeln("<html><head><title>"+title+" - "+header+"</title></head><body>");
  printwin.document.writeln("<p align='left'><table width='100%'><tbody valign='top'");
  printwin.document.writeln("<tr><td><h4>"+header+"</h4><br></td></tr>");
  printwin.document.writeln("<tr><td>"+text1+"</td><td>"+text2+"</td></tr>");
  printwin.document.writeln("</tbody></table></p></body></html>");
  printwin.document.close();
  printwin.focus();
  printwin.print();
  printwin.close();
}
Avatar billede pyroman Nybegynder
22. juni 2004 - 16:13 #2
Wauw - var det bare det? ...eller - jeg havde på fornæmmeren at det bare var sådan en lille ting...

Men kan du ikke lige give mig en forklaring hvorfor man skal lukke document, og hvad den egentlig gør?

..og så bare smid et svar :)
Avatar billede roenving Novice
22. juni 2004 - 16:25 #3
Document lukkes normalt definitivt af en forbindelse, som afsluttes eller lignende ting, dette findes jo så ikke her, så det skal eksplicit lukkes (og man bør altid gøre uanset formålet !-)

Forklaringen på at det virker i Mozilla kunne være at den tager de tags, du skriver, alvorligt, mens f.eks. Internet Explorer forventer, at kodeskriveren har lavet noget snot-kode, så den måske kunne få flere data ind i siden, selv om du med koden i realiteten har angivet en lukning af dokumentet (</html> !-)

Desuden er .focus() nødvendig, når du skal udskrive andre window-objekter end det, hvor koden forekommer, der er åbenbart en eller anden form for bug, som ikke udfører metoden på det objekt, som den angives for, men på det aktuelle window-objekt ...

-- og velbekomme '-)
Avatar billede pyroman Nybegynder
22. juni 2004 - 16:29 #4
Det virkede faktisk fint uden focus i IE - men det kan jo være at andre versioner ikke kan hit' ud af det...
Men ok - tak for forklaringen, det er altid rart at lære noget nyt :)

Og så bør microsoft altså gøre noget ved deres browser - den er jo syg ;)
Avatar billede roenving Novice
22. juni 2004 - 16:32 #5
Hrm ...

Kan være, at det ikke er nødvendigt med fokus i popups, for det kan godt passe, at jeg er stødt ind i problemet med fokus, når det har været en (skjul) (i)frame ...

-- og tak for point ;~}
Avatar billede pyroman Nybegynder
22. juni 2004 - 16:42 #6
hey - ham jeg laver det for beklager sig - han har lige uploadet det og der sker intet i hans IE - hos mig virker det fint :S

Hvad kan være skyld i det?


Det er en flash fil der kalder scriptet... hvis det overhovedte kan betyde noget...
Avatar billede roenving Novice
22. juni 2004 - 16:49 #7
Har han tømt cachen ?-)
Avatar billede pyroman Nybegynder
22. juni 2004 - 17:12 #8
Ej - nu ved jeg måske hvorfor det ikke virker...

Er der nogle tegn der bliver ugyldigenår man sætter man overfører dem til en funktion i et parameter?
Har nemlig haft nogle problemer med visse tegn, når jeg skulle overføre teksten fra flash til js-scriptet - nogle tegn forhindrede enten flash eller javascriptet i at blive udført...
Har derfor været nødt til at unescape min tekst og indsætte hex-koder for nogle tegn, fx "%" og æøå... Ellers kommer der mærkelige fejl eller js'en bliver slet ikke udført
Avatar billede roenving Novice
22. juni 2004 - 17:25 #9
Der kan måske være problemer med overførslen imellem de to forskellige miljøer ...

For der kan være mulighed for at den kode, som bruges til at repræsentere tegnene, kan give problemer ...
Avatar billede pyroman Nybegynder
22. juni 2004 - 18:58 #10
er der begrænsninger for hvor lang en streng i parameretet må være?
Avatar billede roenving Novice
22. juni 2004 - 19:02 #11
-- arh, måske der er linjeskift i parameteren ?-)

Hvis der er det kan det give problemer, de må nemlig kun forekomme som instring-oversættelserne:

\r\n, \r eller \n ...
Avatar billede pyroman Nybegynder
22. juni 2004 - 19:19 #12
Nej den har jeg ordnet ved at lave dem om til <br>, det andet kan browseren jo heller ikke forstå når den skal vise print siden...

Men jeg har fundet ud af at jeg ikke kan sende tekst på mere en ca. 200 tegn i hvert parameter... om jeg så kan sende 1 tegn i to af parametrene i og 598 i det sidste, ved jeg ikke...

Desuden gav ' (apostrof) også nogle problemer...

Har du hørt om noget lignende?
Avatar billede roenving Novice
22. juni 2004 - 19:30 #13
Hrm ...

Jeg lave i mit window.open-laboratory working demo uden problemer een lang streng, som skrives til et vindue, og den er adskilligt over 400 karakterer lang, så det lyder ikke sandsynligt ...

Men hvad der så skulle være galt ...
Avatar billede pyroman Nybegynder
22. juni 2004 - 20:26 #14
Det er nok flash playeren der ikke er den bedste... jeg har lavet et script for at undersøge hvor mange tegn man må sende..

Med et parameter må jeg sende præcis 489 tegn... ikke mere... dette må jeg jo så arbjede ud fra... jeg laver nok en smart lille ting der deler teksten op og sender det i over flere gange, for så at samle det igen og skrive det til vinduet...

Men tak for hjælpen :)
Avatar billede roenving Novice
23. juni 2004 - 01:20 #15
À propos er det så principielt smartere at samle det til een tekststreng og så bagefter skrive det til vinduet, men næppe signifikant i dette tilfælde:

function printText(title, header, text1, text2, w, h){
  printwin = window.open("","txt","width="+w+",height="+h);
  var txt = "<html><head><title>"+title+" - "+header+"</title></head><body>";
  txt += "<p align='left'><table width='100%'><tbody valign='top'";
  txt += "<tr><td><h4>"+header+"</h4><br></td></tr>";
  txt += "<tr><td>"+text1+"</td><td>"+text2+"</td></tr>";
  txt += "</tbody></table></p></body></html>";
  printwin.document.write(txt);
  printwin.document.close();
  printwin.focus();
  printwin.print();
  printwin.close();
}
Avatar billede pyroman Nybegynder
23. juni 2004 - 09:58 #16
ok tak!

Jeg tror jeg har fundet fejlen... og det er at flash's getURL() metode, som jeg bruger til at kalde js funktionen åbenbart ikke må indeholde en længere tekststreng, som fx en hel sides tekst...
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