[Javascript] setAttribute type

eddiegordo -  
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

2 réponses

xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Salut,

Tu as essayé ca:

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


0
eddiegordo
 
Merci pour ta réponse xav3601

Je viens d'essayer. La fonction ne se lance plus :s
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
^^

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
eddiegordo
 
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 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Alors ca c'est bizarre ^^

et donc celui là:

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

il affiche quoi?
0
eddiegord0
 
il affiche :
type=application/pdf
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
et si tu rajoutes manuellement les " autour de application/pdf après ca fonctionne?
0