Avatar billede soelle Nybegynder
24. august 2007 - 17:40 Der er 15 kommentarer og
1 løsning

Print popup virker ikke i IE7

Jeg har følgende script som virker fint i Firefox men ikke i IE7:

<script>
vin = null;

function pop() {
vin = window.open("print.html", "vindue");
if (vin && !vin.closed)
vin.print();
}

</script>

Vinduet åbner som det skal men jeg får ikke printdialogen frem.
Avatar billede w13 Novice
24. august 2007 - 17:45 #1
Hvad hvis du fjerner if-sætningen? Den vil jo altid blive kørt efter, at det nye vindue bliver åbnet. I øvrigt skal du huske at sætte script til:

<script type="text/JavaScript">
Avatar billede soelle Nybegynder
24. august 2007 - 20:37 #2
Ingen af delene hjælper. Hvis jeg erstatter vin.print() med window.print virker det, bortset så fra at det ikke er popupvinduet der bliver printet.
Avatar billede w13 Novice
25. august 2007 - 15:00 #3
Hmm. Du giver jo det nye vindue navnet "vindue". Så prøv med vindue.print();
Avatar billede soelle Nybegynder
26. august 2007 - 10:59 #4
Så får jeg en fejl " 'vinduet' ikke defineret ". Jeg har også testet det første script i IE6, der virker det heller ikke. Det virker som skrevet fint i Firefox

Virker det hos dig i IE?
Avatar billede soelle Nybegynder
26. august 2007 - 11:19 #5
Nu har jeg prøvet flg. kode:

<FORM><INPUT TYPE="button" VALUE="Open Second Window"  onClick="msgWindow=window.open('','window2',  'resizable=no,width=200,height=200')"><P><A HREF="print.pdf" TARGET="window2"> Load a file into window2</A><P><INPUT TYPE="button" VALUE="Print Second Window"  onClick="msgWindow.print()"></FORM>

Så får  jeg jeg scriptfejlen "Tilladelse nægtet". Det åbenbart noget sikkerhed omkring  PDF, men hvordan kommer man så ud over det?
Avatar billede w13 Novice
26. august 2007 - 11:21 #6
Ah ja, så det er en pdf-fil. Den kan du ikke printe automatisk, så vidt jeg ved, da den jo ikke kan arbejde med HTML. Hvis du kan smide den i et frame på siden, kan det muligvis lade sig gøre.
Avatar billede soelle Nybegynder
26. august 2007 - 11:29 #7
Har du et forslag til kode på det?
Avatar billede w13 Novice
26. august 2007 - 12:34 #8
Jeg ved ikke, hvor holbart det er. Muligvis må din løsning bare være, at brugeren selv skal trykke på "Udskriv". Men ellers må det være noget med et Iframe, som du ligger i popup'en:

<iframe style="width:100%;height:100%" src="fil.pdf"></iframe>

På denne måde kan du så printe siden med msgWindow.print(), da det er en HTML-side, som bare viser indholdet af PDF'en.
Avatar billede olebole Juniormester
26. august 2007 - 14:55 #9
<ole>

Mon ikke problemet ligger i forsøg på cross-domain-scripting? Du kan ikke scripte mod dokumenter, der ikke ligger under dit domæne  ;o)

/mvh
</bole>
Avatar billede soelle Nybegynder
26. august 2007 - 21:51 #10
Hvad mener du, olebole? Det hele ligger på samme domæne. Og det virker jo i Firefox.
Avatar billede soelle Nybegynder
26. august 2007 - 21:58 #11
Din løsning virker desværre ikke w13.
Avatar billede showsource Seniormester
26. august 2007 - 22:01 #12
focus() er nok hvad der skal til, før print()
Avatar billede olebole Juniormester
26. august 2007 - 23:54 #13
Nej, der er større problemer med at tilgå pdf'er ... har lige prøvet at 'forske' lidt i emnet  :)

Dette er ikke kønt - eller helt validt - men det funker i IE (brug anden kode i FF):

function printPdfInExplorer(pdfSrc) {
    var oWin, oDoc, oObj, css, oP, sTxt, oH;
    oWin = window.open("about:blank", "_blank");
    oDoc = oWin.document;
    oObj = oWin.document.createElement("object");
    css = oObj.style;
    oP = oDoc.createElement("<param name='src' value='"+pdfSrc+"'>");
    sTxt = "Udskriver om et øjeblik ... vent venligst";
   
    oH = oDoc.createElement("h1");
    oH.style.textAlign = "center";
    oH.style.fontFamily = "verdana, arial, sans-serif";
    oH.appendChild(oDoc.createTextNode(sTxt));
    oDoc.getElementsByTagName("body")[0].appendChild(oH);
   
    oObj.appendChild(oP);
    oDoc.getElementsByTagName("body")[0].appendChild(oObj);
    oObj.setAttribute("id", "gnu");
    oObj.setAttribute("type", "application/pdf");
    css.width = "100%";
    css.height = "100%";
    oDoc.title = sTxt;
   
    setTimeout(function(){doPrint(oObj)}, 1000);
}
function doPrint(oObj) {
    oObj.focus();
    oObj.print();
}

// Kald med:
printPdfInExplorer("myPdf.pdf");

Et væsentligt problem er dog at time korrekt i timeOut'en. Det er ikke en løsning, jeg vil anbefale, men er det tætteste, jeg lige kommer en løsning her og nu  :)
Avatar billede soelle Nybegynder
27. august 2007 - 09:33 #14
Ja, det virker fint olebole. Jeg har dog fundet en anden løsning. Jeg har integreret et javascript i PDF filen som sætter den til at printe når man man åbner PDF'en.

Smid svar for point...
Avatar billede soelle Nybegynder
13. september 2007 - 10:34 #15
Er der ingen der vil have point her?
Avatar billede soelle Nybegynder
18. august 2010 - 12:52 #16
lukker
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