2012-01-16 6 views
3

Je suis en train d'ouvrir un document Word en utilisant window.open comme ci-dessouswindow.open ne se ouvre pas dans IE

window.open("myworddoc.doc"); 

Il fonctionne très bien dans FF, mais IE tente d'ouvrir un onglet, mais ferme immédiatement et revient à l'écran actuel (aucune boîte de dialogue ne s'affiche pour enregistrer ou ouvrir un fichier).

Quel pourrait être le problème?

+1

FYI: Cela ressemble à une fonctionnalité de sécurité dans IE vérifier ot [this] (http://stackoverflow.com/questions/459024/how-do-you-get-window-open-to-work-in-internet- explorer-7) –

+0

Les navigateurs détestent généralement l'ouverture de popups en utilisant 'window.open' sauf s'il s'agit d'une action déclenchée par l'utilisateur. –

+0

@Emmanuel. La discussion indique que window.open devrait être déclenché sur l'action basée sur l'utilisateur. J'utilise une valeur déroulante pour le déclencher – DG3

Répondre

4

Il s'agit sûrement d'une mesure de sécurité. L'ouverture de documents Word en utilisant JavaScript pourrait avoir des effets désagréables. Imaginez si vous naviguez sur Internet et que quelqu'un rend un document Word infecté ouvert lors du chargement de votre page.

Personnellement, je crée un fichier PHP, disons "servedoc.php", et ouvrir ce fichier comme ceci:

window.open("servedoc.php"); 

servedoc.php pourrait contenir quelque chose comme ceci:

<?php 

$file = "myworddoc.doc"; 

header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=$file"); 
header("Content-Type: application/msword"); 
header("Content-Transfer-Encoding: binary"); 

readfile($file); 

IE ouvrira le fichier PHP, car il s'agit d'un fichier web parfaitement valide. Et le script PHP servirait le fichier au navigateur, demandant à l'utilisateur de télécharger le fichier.

+2

Pourquoi envoyez-vous 'application/zip' comme type de contenu? –

+0

Oups! Copier-coller ceci à partir d'un exemple de travail que j'avais. J'ai oublié de changer le type MIME, merci de le signaler! – jValdron

0

Ou si vous utilisez .net (vb):

Response.ContentType = "image/jpeg" 'mime type of the file to serve. 
Response.AddHeader("content-Disposition", "attachment;filename=YOURFILENAME") 
Response.TransmitFile(YourFILEPath) 

Comme cela, vous pouvez les laisser télécharger le fichier .doc ou le fichier .zip si vous préférez.

Questions connexes