Avatar billede djsteiner Nybegynder
16. august 2010 - 13:09 Der er 18 kommentarer og
1 løsning

Print af popup

Hej jeg står og har brug for noget hjælp til at lave et script der kan printe min tooptip ud (popup window)

Jeg har selv prøvet at finde noget på nettet og her på siden men har ikke kunne få det til at virke, og det skal også lige siges jeg har ikke den store erfarning med Java Script.

Det er denne side her jeg arbejder på:

http://www.ikast-brande.dk/site.aspx?MenuID=143&Langref=1&Area=&topID=&ArticleID=13727&expandID=5096

Her har i java script koden som den ser ud nu:


function showTip(id) {
    var e = document.getElementById(id);
    if (e.style.display == '' || e.style.display == 'none') {
        e.style.display = 'block';
    }
}
function hideTip(id) {
    var e = document.getElementById(id);
    e.style.display = 'none';
}
Avatar billede Slettet bruger
16. august 2010 - 15:16 #1
Hvad med...
Et "Print mig" link i hjørnet, som overfører indholdet af div'en til et printer-parat dokument (brevhoved, åbningstid osv.) i et popop-vindue og dérfra kalde print på normal vis.

<div id='pop4711'>
Snik snak. Lirum larum, blablabla. Fyld selv op efter behov : )
<a href="java script:printDiv('pop4711')">Print mig</a>
</div>

function printDiv(id)
  {
  var pop = window.open(...printklar.html...)
  pop.getElementById("content").innerHTML = document.getElementById(id).innerHTML
  pop.print();pop.close()
  }

                                                                                      Det var sgu en god idé, hvis jeg selv skal sige det : )
Avatar billede djsteiner Nybegynder
17. august 2010 - 13:38 #2
Hej T4NK3R

Der er lige et problem efter jeg har prøvet mig frem med denne kode du har lavet så virker det ikke, nu kommer tooltipen (popup window) ikke frem.

og skal man endenligt lave en side der hedder printklar.html før den kan finde den??

Noget helt andet kan et div godt have flere ider??


Her har du koden som den ser ud nu:


<script type="text/javascript">
function showTip(id) {
    var e = document.getElementById(id);
    if (e.style.display == '' || e.style.display == 'none') {
        e.style.display = 'block';
    }
}
function hideTip(id) {
    var e = document.getElementById(id);
    e.style.display = 'none';
}



function printDiv(id)
  {
  var pop = window.open(...printklar.html...)
  pop.getElementById("content").innerHTML = document.getElementById(id).innerHTML
  pop.print();pop.close()
  }


</script>
Avatar billede Slettet bruger
17. august 2010 - 14:45 #3
Min "kode" var jo ikke komplet, kun en skitsering af en mulug løsning..
- window.open skal have en bunke parametre..
- Og der manglede lidt =>
pop.document.getElementById("content").innerHTML = document.getElementById(id).innerHTML

Ja, der skal findes en html-side som du kan overføre indholdet fra tool-tip'et til (en valid HTML-side)
- det kommer lidt an på dit "miljø" - jeg kan se at siden er .aspx (ukendt land for mig..), har du mulighed for at lægge en "flad" html-fil et sted - eller evt. oprette én i "aspx"?

Nej, kun  ét id på objekt.
Avatar billede djsteiner Nybegynder
17. august 2010 - 18:04 #4
Problemet er at dette laves i et CMS system hvor jeg kan indsætte html, css og javascript.

Jeg kan ikke tilføje en html side.
Avatar billede Slettet bruger
17. august 2010 - 18:19 #5
Så må du spørge en af de voksne, om de kan oprette den for dig : )
- Vis dem ideen, så bliver de sikkert fyr og flamme, for det ER rocker smart!
Avatar billede djsteiner Nybegynder
18. august 2010 - 15:18 #6
Hej igen :)

jeg kommer nok med et dumt spørgsmål her men kan man ikke lave et link med target="_blank" :)

Et Eks:


<a class="link" title="www.brandeskiklub.dk" target="_blank" href="http://www.brandeskiklub.dk">Ikast brande skiklub </a>
Avatar billede Slettet bruger
18. august 2010 - 15:26 #7
Joda. Det betyder at linket åbnes i et nyt vindue/faneblad.
Avatar billede djsteiner Nybegynder
18. august 2010 - 18:53 #8
jamen kan man bruge dette til nogen med hensyn til det javascript du har lavet ?

istedet for "printklar.html"


function printDiv(id)
  {
  var pop = window.open(...printklar.html...)
  pop.getElementById("content").innerHTML = document.getElementById(id).innerHTML
  pop.print();pop.close()
  }
Avatar billede Slettet bruger
18. august 2010 - 19:30 #9
Ikke rigtig - det er jo dét window.open gør.

Men til forskel, returnerer window.open et "handle" (i variablen pop) så du bagefter kan overføre indholdet at popop'en til "print-dokumentet".
Avatar billede djsteiner Nybegynder
19. august 2010 - 11:04 #10
Hej igen nu har jeg prøvet at lave et eks. på min egen maskine her hjemme for at få en forståelse af hvordan det virker:

Men kan ikke få det til at virke. og jeg har lavet en tom side med navnet: printklar.html

Det kommer bare med beskeden om at "Siden blev ikke fundet" oppe i browservinduet står dette:

Altså her bliver man sendt til når man trykker på print mig linket:

http://localhost/divprint/java%20script:printDiv('tip1')

Håber dette giver mening.

Jeg sender lige koden med som den ser ud nu:


<script type="text/javascript">
function showTip(id) {
    var e = document.getElementById(id);
    if (e.style.display == '' || e.style.display == 'none') {
        e.style.display = 'block';
    }
}
function hideTip(id) {
    var e = document.getElementById(id);
    e.style.display = 'none';
}




</script>



<script type="text/javascript">
function printDiv(id)
  {
  var pop = window.open(...printklar.html...)
  pop.document.getElementById("content").innerHTML = document.getElementById(id).innerHTML
  pop.print();pop.close()
  }
</script>


<style type="text/css">




A:link {text-decoration: none; color:#777777}
A:visited {text-decoration: none;color:#777777}
A:active {text-decoration: none;color:#777777}
A:hover { text-decoration:underline;color:#777777}


.link { text-decoration: none; color:#777777;}
.link:visited { text-decoration: none; color:#777777;}
.link:active  { text-decoration: none; color:#777777;}
.link:hover  { text-decoration: underline; color:#666666;}





.tooltip {
    display: none;
    width: 500px;
    height:auto;
    padding:10px;
    border: 1px solid black;
    font-family: Verdana, Geneva, sans-serif;
    font-size:11px;
    background-color:#FFF;
    font-weight:normal; line-height:16px;
    float:left;
    position: absolute;
    margin-top:-40px;
    margin-left:0px;
        z-index:2;

}
   


</style>
   



<!-- Ikast Brande ski  --><a title="Rul på Hagelskærvej" onClick="showTip('tip1');" alt="Rul på Hagelskærvej" href="#"><font style="BACKGROUND-COLOR: #ffffff">Rul p&aring; Hagelsk&aelig;rvej!</font></a> <br />
<div id="tip1" class="tooltip ">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="java script:printDiv('tip1')">Print mig</a>
<a onClick="hideTip('tip1');" href="#"><img style="FLOAT: right" title="Luk" alt="Luk" src="../../billeder/close-button-lightbox.png" /></a> <br /><br />
<p style="FONT-WEIGHT: bold; margin-top:-25px;" align="left">Ikast-Brande Skiklub<br />Rul p&aring; Hagelsk&aelig;rvej! <br /><br />Sted: P-pladsen, &oslash;st, ved nordre Skole og Fritidshjemmet <br />Dato: 1. september &nbsp; Tid: 17.45-20.00 </p>
<img style="MARGIN-TOP: -100px; FLOAT: left; MARGIN-LEFT: 370px" title="Ikast-brande skiklub" alt="" src="../../billeder/logo-webbillede.png" />
<p align="left">Kom og pr&oslash;v rulleski - vi holder &aring;ben gade, hvor der ogs&aring; er en demonstration af rulleski for folk, der aldrig har pr&oslash;vet det f&oslash;r. Der er ikke tidtagning. Medbring cykelhjelm og gerne kn&aelig;beskyttere til denne event. <br /><br />Ruten er p&aring; cykelstien fra Nordre Skole til Tulstrup p&aring; den side hvor skolen ligger og p&aring; Hagelsk&aelig;rvej ud til krydset, hvor Overg&aring;rdsvej m&oslash;des med Hagelsk&aelig;rvej. <br /><br />Instruktion for begyndere og andre interesserede p&aring; l&aelig;rernes P-plads ved Nordre Skole. Der er parkering ved Fritidshjemmet og Nordre Skole. <br /><br /><b>Hjemmeside: </b> &nbsp; &nbsp; <a class="link" title="www.brandeskiklub.dk" target="_blank" href="http://www.brandeskiklub.dk"><br />Ikast brande skiklub </a>

<div style="width:100px; height:auto; float:left; margin-top:-40px; margin-left:150px; padding-left:5px; "><b>Adresse: </b><br />
Nordre Skole
Hagelskærvej
7430 Ikast

</div>

<div style="width:150px; height:auto; float:left; margin-top:-65px; margin-left:290px; padding-left:5px; "><b>Kontakt: </b><br />
Jens Ole Krogh
<a href="mailto:kroghrosenberg@webspeed.dk">kroghrosenberg@webspeed.dk</a>
Tlf:&nbsp;29292627

</div></p>

</div>
<!-- Ikast Brande ski slut --><br />
Avatar billede Slettet bruger
19. august 2010 - 20:02 #11
Hej du, nu blev jeg sgu lige nødt til at prøve det "i virkeligheden" : )

Og jo, det virker fint - 2 filer. Gem dem på din desktop:

Først den med div'en som skal printes: Gem nedenstående som "side.html"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html><head><meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<style>
.printKnap {text-align:right;}
</style>
<script>
var printMe = null
var printPop = null
function printDiv(id)
    {
    printMe = id
    printPop = window.open("divPrinter.html","_blank","location=0,status=0,scrollbars=1,width=800,height=600")
    }
function printIt() // kaldes fra divPrinter.html, når den er loadet og klar
    {
    printPop.document.getElementById("payload").innerHTML = document.getElementById( printMe ).innerHTML
    printPop.print()
    printPop.close()
    }
</script></head><body>

Dette er den normale side. Lirum larum.<br>

<div id="info" style="border:1px solid red; width:500px; background-color:#FED;">
Her er en DIV med noget vigtig information:
<p>
Bygning 42, anden sal, dør nr. 7:<br>
Bank to gange, og vent 9 minutter. Bank én gang til.<br>
Tæl langsomt til 2. Døren kan nu åbnes. Gå hurtigt ind.<br>
Luk døren efter Dem. Dette er SKAT - Affør Dem hat/hue.<br>
- Tag pengene frem - Ingen numre, vi ved hvem De er..<br>
En servicemedarbejder vil betjene Dem. Vent!
<div class="printKnap"><a href="java script:printDiv('info')">Print</a></div>
</div>

Her fortsætter den normle side. Lirum larum
</body></html>


Og den som som er sat pænt op til print: Gem nedenstående "divPrinter.html"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html><head><meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<style>
.printKnap {display:none;}
</style><script>
function onLoadet()
    {
    window.opener.printIt()
    }
</script></head><body onload="onLoadet()">

Her er først lidt afsender-info: Logo & klagevejledning ;-)<br>
<div id="payload" style="border:2px dashed #DDD;margin:10px;">
    Dette indhold erstattes automagisk inden print
</div>
Og så slutter vi af med at fralægge os ethvert ansvar.

</body></html>


NB: I linket i den første fil: href="java script:printDiv('info..."
skal mellemrummet mellem "java" og "script" fjernes (Det tilføjes af Eksperten.dk's editor).

PS: Ved nærmere eftertanke kunne det faktisk gøres endnu mere snedigt - så al koden "bor" i printer-dokumentet, som blot åbnes via et normalt link med div'ens id som parameter..
- Men nu er det, i dén grad, spisetid!
Avatar billede Slettet bruger
19. august 2010 - 20:46 #12
Den snedigere - stadig 2 dokumenter

Dét med div'en som skal printes:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html><head><meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<style>
.printKnap {text-align:right;}
</style></head><body>

Dette er den normale side. Lirum larum.<br>

<div id="info" style="border:1px solid red; padding:6px; width:500px; background-color:#FED;">
<b>Vigtig information:</b><br><br>
Bygning 42, anden sal, dør nr. 7:<br>
Bank 2 gange, og vent 9 minutter. Bank én gang til.<br>
Tæl langsomt til 2. Døren kan nu åbnes. Gå hurtigt ind.<br>
Velkommen til SKAT - Affør Dem hat og benklæder.<br>
En servicemedarbejder vil betjene Dem. Vent!
<div class="printKnap"><a target="_blank" href="divPrinter.html?id=info">Print</a></div>
</div>

Her fortsætter den normle side. Lirum larum
</body></html>


Og divPrinter.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html><head><meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<style>
.printKnap {display:none;}
div {border-top:3px dashed #DDD; border-bottom:3px dashed #DDD; margin:10px; padding:6px;}
</style><script>
function onLoadet()
    {
    var id = ""
    if (window.location.href.indexOf("?id=") > -1)
        id=window.location.href.substring(window.location.href.indexOf("?id=")+4)
    if (id != "")
        if (window.opener.document.getElementById( id ) == null)
            alert("Det specificerede id ("+id+") findes ikke i dokumentet")
        else
            {
            document.getElementById("payload").innerHTML = window.opener.document.getElementById( id ).innerHTML
            window.print()
            window.close()
            }
    else
        alert("Ingen id parameter")
    }
</script></head><body onload="onLoadet()">

<h2>Logo & klagevejledning ;-)</h2>
<div id="payload">
    Dette indhold erstattes automagisk inden print
</div>
<h6>Og her slutter vi af med at fralægge os ethvert ansvar.</h6>

</body></html>
Avatar billede djsteiner Nybegynder
20. august 2010 - 08:41 #13
Super super sejt! :)

Det køre bare mange tak for hjælpen

Kom lige med et svar så giver jeg point;)


God WEEKEND ;)
Avatar billede Slettet bruger
20. august 2010 - 08:58 #14
Tak, i lige måde :)
Avatar billede djsteiner Nybegynder
23. august 2010 - 11:00 #15
Hej igen har lige et lille tillægsspørgsmål.

Da jeg nu fik det til at virke på min egen maskine har jeg prøver at uploade den fil der hedder: divPrinter.html til en server hvor jeg har nogle andre hjemmeside liggende men så kan jeg ikke få det at virke.

Jeg har lavet linket såndan at den nu bliver sendt til denne ardresse:

<a target="_blank" href="http://www.aku-zonia.dk/divPrinter.html?id=info">Print</a>

Men så tager den ikke indholdet med.


Nu ser konden sådan her ud:



<style>
.printKnap {text-align:right;}
</style></head><body>

Dette er den normale side. Lirum larum.<br>

<div id="info" style="border:1px solid red; padding:6px; width:500px; background-color:#FED;">
<b>Vigtig information:</b><br><br>
Bygning 42, anden sal, dør nr. 7:<br>
Bank 2 gange, og vent 9 minutter. Bank én gang til.<br>
Tæl langsomt til 2. Døren kan nu åbnes. Gå hurtigt ind.<br>
Velkommen til SKAT - Affør Dem hat og benklæder.<br>
En servicemedarbejder vil betjene Dem. Vent!
<div class="printKnap"><a target="_blank" href="http://www.aku-zonia.dk/divPrinter.html?id=info">Print</a></div>
</div>

Her fortsætter den normle side. Lirum larum
Avatar billede Slettet bruger
23. august 2010 - 20:38 #16
De to dokumenter SKAL bo i samme domæne, for at kunne læse hinandens indhold.
- ellers er det cross-site-scripting.
Avatar billede djsteiner Nybegynder
23. august 2010 - 21:17 #17
okay så man ikke linke/sende til en fil hvis den ligger på en anden server?

http://ibk.ikast-brande.dk/kulturfritid/divPrinter.html
Avatar billede Slettet bruger
23. august 2010 - 21:33 #18
Nej.
Tænk hvis et site kunne se hvad der stod på den side du kom fra - det ku' være din netbank...
Avatar billede djsteiner Nybegynder
23. august 2010 - 22:28 #19
okay ja det kan jeg godt se det giver mening.

Tak for svaret
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