52 votes

Comment puis-je imprimer un IFrame à partir de javascript dans Safari/Chrome

Quelqu'un peut s'il vous plaît aidez-moi avec l'impression du contenu d'une IFrame, via un appel javascript de Safari/Chrome.

Cela fonctionne dans firefox:

$('#' + id)[0].focus();
$('#' + id)[0].contentWindow.print();

cela fonctionne sous IE:

window.frames[id].focus();
window.frames[id].print();

Mais je ne peux pas obtenir quoi que ce soit pour travailler dans Safari/Chrome.

Merci

Andrew

49voto

Andrew Bullock Points 14899

voici mon complet, de la croix-navigateur solution:

dans l'iframe de la page:

function printPage() { print(); }

dans la page principale

function printIframe(id)
{
    var iframe = document.frames ? document.frames[id] : document.getElementById(id);
    var ifWin = iframe.contentWindow || iframe;
    iframe.focus();
    ifWin.printPage();
    return false;
}

Mise à jour: Beaucoup de gens semblent avoir des problèmes avec cette version d'IE a publié depuis que j'ai eu ce problème. Je n'ai pas de temps à analyser de nouveau à droite maintenant, si vous êtes coincé, je vous suggère de lire tous les commentaires dans ce thread entier!

42voto

Diodeus Points 67946

Mettre une fonction d'impression dans l'iframe et l'appeler à partir du parent.

iframe:

function printMe() {
  window.print()
}

parent:

document.frame1.printMe()

34voto

Max Felker Points 1259

J'ai utilisé Andrew script, mais a ajouté un morceau avant de le printPage() la fonction est appelée. L'iframe doivent se concentrer, sinon, il aura toujours l'impression que le bloc parent dans IE.

function printIframe(id)
{
    var iframe = document.frames ? document.frames[id] : document.getElementById(id);
    var ifWin = iframe.contentWindow || iframe;
    iframe.focus();
    ifWin.printPage();
    return false;
}

N'avez pas à me remercier, c'était André qui a écrit cela. Je viens de faire un tweak =P

8voto

serdar Points 338

En plus de Andrew et Max de solutions, à l'aide d'une iframe.focus() a entraîné l'impression frame parent au lieu d'imprimer seulement les enfants iframe dans IE8. Modification de la ligne fixe:

function printIframe(id)
{
    var iframe = document.frames ? document.frames[id] : document.getElementById(id);
    var ifWin = iframe.contentWindow || iframe;
    ifWin.focus();
    ifWin.printPage();
    return false;
}

4voto

Luis Garcia Points 49

Utiliser firefox window.frames mais aussi d'ajouter de l' name propriété, parce qu'utilise l'iframe dans firefox

C'est à dire:

window.frames[id]

Firefox:

window.frames[name]

<img src="print.gif"  onClick="javascript: window.frames['factura'].focus(); parent['factura'].print();">
<iframe src="factura.html" width="100%" height="400" id="factura" name="factura"></iframe>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X