[Javascript] setAttribute type

Fermé
eddiegordo - 21 mai 2010 à 08:48
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 - 21 mai 2010 à 11:07
Bonjour,

Pour la création d'un site internet, je dois permettre aux visiteurs d'imprimer des fichiers pdf directement depuis le site (sans passer par la fonction imprimer d'adobe).

J'ai donc fait un lien qui fait appel à une fonction javascript que j'ai créé.

function imprimerPdf(chemin)
{
	if (navigator.appName == 'Microsoft Internet Explorer') 
	{
		if(newWindow = window.open())
		{
			var openBody = newWindow.document.createElement("body");
			newWindow.document.insertBefore(openBody);
			
			var myObjectPDF = newWindow.document.createElement("object");
			myObjectPDF.setAttribute('data', chemin);
			myObjectPDF.setAttribute('type', 'application/pdf');
			myObjectPDF.setAttribute('width', '100%');
			myObjectPDF.setAttribute('height', '100%');
			
			newWindow.document.body.appendChild(myObjectPDF);
			
			newWindow.print();
		}
		else
		{
			alert("erreur lors de l'ouverture de la page");
		}
	}
	else
	{
		newWindow = window.open(chemin, "Impression du fichier PDF")
		setTimeout("newWindow.print()",1250);
	}
}


Mon problème se situe lorsque je tente d'imprimer avec IE : si je lance la fonction, une fenêtre s'ouvre bien mais n'affiche pas le pdf dans la page.

En y regardant de plus près avec DebugBar (équivalent de firebug sous IE8), je me rend compte que l'object a bien été créé mais que celui ci comporte un type sans les guillemets : type=application/pdf

Du coup IE ne comprend pas qu'il doit afficher un fichier pdf, et donc il l'affiche pas...

J'ai essayé de mettre :
myObjectPDF.setAttribute('type', '\"application/pdf\"');

et toutes les configurations possibles avec " ou ' mais rien n'y fait.

Quelqu'un aurai-t-il une idée de pourquoi IE n'entoure pas de guillemets la valeur de l'attribut type quand je créé un object avec du javascript ?

Merci

2 réponses

xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
21 mai 2010 à 09:02
Salut,

Tu as essayé ca:

myObjectPDF.setAttribute('type', '''application/pdf''');


0
Merci pour ta réponse xav3601

Je viens d'essayer. La fonction ne se lance plus :s
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
21 mai 2010 à 09:12
^^

Alors ca doit pas être ca :-P

Je sais que desfois le ' sers à échapper, mais ca ne doit pas fonctionner en JS.

Alors essaye comme ca peut être:

myObjectPDF.setAttribute("type", "application/pdf");

Ou comme ca:

myObjectPDF.setAttribute("type", "'application/pdf'");
0
Le premier est celui que j'avais déjà essayé, il ne marche pas.

Je viens d'essayer le second et le type qui s'affiche dans l'object est maintenant :
type="'application/pdf'"


Vu qu'il y ' et ", IE ne reconnait pas non plus le type :s
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
21 mai 2010 à 10:12
Alors ca c'est bizarre ^^

et donc celui là:

myObjectPDF.setAttribute("type", "application/pdf");

il affiche quoi?
0
il affiche :
type=application/pdf
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
21 mai 2010 à 10:21
et si tu rajoutes manuellement les " autour de application/pdf après ca fonctionne?
0