Réglage de l'événement OnLoad pour fenêtre nouvellement ouverte dans IE6
J'ai besoin de l'attribut onload pour un nouveau remonté la fenêtre.
Le code suivant fonctionne pour Firefox:
<a onclick="printwindow=window.open('www.google.com');printwindow.document.body.onload=self.print();return false;" href='www.google.com'>
Cependant, lorsque j'essaie ce dans IE, j'obtiens une erreur "printwindow.document.corps null ou non définie"
L'objectif est d'ouvrir une nouvelle fenêtre, et appelez la boîte de dialogue imprimer pour que la fenêtre une fois qu'il est ouvert.
Des indices sur la façon de faire ce travail?
Il est important de ne pas utiliser javascript ailleurs sur la page cible, comme je n'ai pas le contrôle. Toutes les fonctionnalités doivent être contenues dans le lien que j'ai posté ci-dessus.
OriginalL'auteur SocialCensus | 2008-10-28
Vous devez vous connecter pour publier un commentaire.
Alors que les réponses précédentes correctement a déclaré la nouvelle fenêtre doit être du même domaine, ils ont pas répondu correctement à pourquoi il a reçu l'erreur " printwindow.document.corps null ou non défini". C'est parce que IE n'est pas de retour, peu importe le statut de la fenêtre.open() qui signifie que vous pouvez ouvrir une page et tentez d'y accéder AVANT onload est disponible.
Pour cette raison, vous devez utiliser quelque chose comme setTimeout pour vérifier. Par exemple:
Cela est discuté plus loin ici
OriginalL'auteur ace
Ce n'est pas possible à moins que les deux pages sont sur le même domaine. Votre code ne fonctionne pas dans FF, mais plutôt imprime la page en cours. Si les pages sont sur le même domaine, alors on peut écrire:
OriginalL'auteur jcampbell1
Vous êtes en s'appuyant sur "printwindow.document.corps.onload=auto.print();" la ligne exécutée avant que l'enfant document se termine le chargement. Je ne pense pas que vous pouvez être assuré que.
Voici une idée: préparer HTML ou une page qui n'a rien, mais la page que vous avez besoin dans un iframe. Cette page vous avez corps.onload=auto.print().
OriginalL'auteur buti-oxa
onload est une propriété si la fenêtre des objets, pas des éléments du corps, en dépit de ce que l'attribut HTML pourraient vous amener à croire. C'est la référence:
Cependant, dans ce contexte, vous ne pouvez pas passer une chaîne de JavaScript - vous besoin de main d'une fonction. Ainsi, le script intégral comme ressemblerait à ceci
Maintenant, mettre tous ensemble
CEPENDANT! Cela ne va pas travailler pour vous pour l'URL "www.google.com". Le navigateur de modèle de sécurité empêche les parents de windows d'accéder à la fenêtre des objets des fenêtres enfant, à MOINS qu'ils résident tous les deux @ le même nom de domaine.
OriginalL'auteur Peter Bailey
Consultez nos jQuery. En particulier le document de prêt fonctionnalité.
http://docs.jquery.com/Tutorials:How_jQuery_Works#Launching_Code_on_Document_Ready
OriginalL'auteur Eli
De la finale (certes, mauvaise) solution qui a fonctionné pour tous les navigateurs a été d'utiliser setTimeout et appel de print() de cette façon, au lieu de modifier l'attribut onload:
OriginalL'auteur SocialCensus