Ik heb de volgende code:
HTML:
Javascript:
Zoals je kunt zien, maakt de functie printRoute() binnen de tags van de div met het id='route', iframe tags aan, die weer een ander bestand bevatten, die ik speciaal voor printdoeleinden heb gemaakt (zonder overbodige menus ed.). In dat bestand route.php bevindt zich een window.print() opdracht, welke keurig tussen <script> tags bevindt. (De window.print() opdracht is getest en goed bevonden, daar deze zich tot op heden in een popup bevond).
Alles op een rijtje zettend, moet de code eerst de hidden div zichtbaar maken (beetje redundant, daar deze niet zichtbaar is gezien de hoogte en breedte van 0, maar dat maakt voor nu niet veel uit), de iframe ertussen proppen, deze focussen en dan moet de window.print() functie welke zich in het iframe geladen bestand bevindt de iframe uitprinten. Theoretisch moet het goed gaan en ook mijn grote vriend Mozilla Firefox 1.5 heeft er geen bezwaar tegen, die print keurig de iframe uit en niets meer. Alleen, mijn niet zo grote vriend Internet Explorer 6.0 SP2 op Windows XP (alle updates zijn binnen etc) vindt het niet zo'n goed plan, er gebeurt namelijk helemaal niets. Ik heb de hoogte en breedte van de div tijdelijk groter gemaakt en toen kon ik zien dat de iframe wel geladen wordt, alleen de window.print() functie in het bestand route.php wordt genegeerd. Ik zie geen javascript errors, er gebeurt gewoon helemaal niets. Maar het vreemde is, zodra ik de pagina refresh met een druk op de knop F5 van mijn toetsenbord, komt er wel een 'Afdrukken' schermpje naar voren. Maar dit is niet het bestand route.php wat'ie wilt uitprinten, hij wilt de pagina waar het iframe instaat afdrukken en dat is nou net niet de bedoeling.
Wat heb ik geprobeerd:
1) In Javascript, document.getElementById('route_print').print(); toegevoegd, maar deze doet niets, genereert een js error ('is not a function') in de Webdeveloper toolbar in Firefox.
2) De div ipv een 0 waarde voor de hoogte en breedte op iets van 50 px hoog en breed gezet, zodat ik echt wat zag. Dit heeft echter ook geen effect.
Ik weet niet echt wat ik anders kan doen. Op Google heb ik weinig zinnigs gevonden (daar vond ik de in 1) geprobeerde 'oplossing') en op GoT vond ik mogelijke oplossingen dit of geen zin hadden of niet werkten.
HTML:
code:
1
2
3
| <!-- zwikkie niet relevante code --> <div id="route" style="display:none; overflow: auto; width: 0px; height: 0px;"></div> <!-- nog een lap niet relevante code --> |
Javascript:
code:
1
2
3
4
5
| function printRoute(){
document.getElementById('route').style.display = '';
document.getElementById('route').innerHTML = "<iframe src='route.php' id='route_print'></iframe>";
document.getElementById('route_print').focus();
} |
Zoals je kunt zien, maakt de functie printRoute() binnen de tags van de div met het id='route', iframe tags aan, die weer een ander bestand bevatten, die ik speciaal voor printdoeleinden heb gemaakt (zonder overbodige menus ed.). In dat bestand route.php bevindt zich een window.print() opdracht, welke keurig tussen <script> tags bevindt. (De window.print() opdracht is getest en goed bevonden, daar deze zich tot op heden in een popup bevond).
Alles op een rijtje zettend, moet de code eerst de hidden div zichtbaar maken (beetje redundant, daar deze niet zichtbaar is gezien de hoogte en breedte van 0, maar dat maakt voor nu niet veel uit), de iframe ertussen proppen, deze focussen en dan moet de window.print() functie welke zich in het iframe geladen bestand bevindt de iframe uitprinten. Theoretisch moet het goed gaan en ook mijn grote vriend Mozilla Firefox 1.5 heeft er geen bezwaar tegen, die print keurig de iframe uit en niets meer. Alleen, mijn niet zo grote vriend Internet Explorer 6.0 SP2 op Windows XP (alle updates zijn binnen etc) vindt het niet zo'n goed plan, er gebeurt namelijk helemaal niets. Ik heb de hoogte en breedte van de div tijdelijk groter gemaakt en toen kon ik zien dat de iframe wel geladen wordt, alleen de window.print() functie in het bestand route.php wordt genegeerd. Ik zie geen javascript errors, er gebeurt gewoon helemaal niets. Maar het vreemde is, zodra ik de pagina refresh met een druk op de knop F5 van mijn toetsenbord, komt er wel een 'Afdrukken' schermpje naar voren. Maar dit is niet het bestand route.php wat'ie wilt uitprinten, hij wilt de pagina waar het iframe instaat afdrukken en dat is nou net niet de bedoeling.
Wat heb ik geprobeerd:
1) In Javascript, document.getElementById('route_print').print(); toegevoegd, maar deze doet niets, genereert een js error ('is not a function') in de Webdeveloper toolbar in Firefox.
2) De div ipv een 0 waarde voor de hoogte en breedte op iets van 50 px hoog en breed gezet, zodat ik echt wat zag. Dit heeft echter ook geen effect.
Ik weet niet echt wat ik anders kan doen. Op Google heb ik weinig zinnigs gevonden (daar vond ik de in 1) geprobeerde 'oplossing') en op GoT vond ik mogelijke oplossingen dit of geen zin hadden of niet werkten.