Je peux obtenir window.document mais comment puis-je obtenir document.window? J'ai besoin de savoir comment le faire dans tous les navigateurs.Comment obtenir l'objet Window à partir de l'objet Document?
Répondre
The Window object is the top level object in the JavaScript hierarchy, donc il suffit de se référer comme fenêtre
Edit: réponse originale avant Promote JS effort. JavaScript technologies overview sur Mozilla Developer Network indique:
Dans un environnement de navigateur, cet objet global est l'objet de fenêtre.
Edit 2: Après avoir lu le commentaire de l'auteur à sa question (et se downvotes), cela semble être lié à la fenêtre du document de l'iframe. Jetez un oeil à window.parent et window.top et peut-être les comparer pour inférer votre fenêtre de document.
if (window.parent != window.top) {
// we're deeper than one down
}
Après 'open()', la nouvelle fenêtre 'window' est une autre' window' que 'opener'.Si vous recevez un 'document' (ou n'importe quel' Node') d'une fonction, vous pourriez avoir besoin de la fenêtre d'origine. (Wow c'est très vieux.) – Rudie
Vous pouvez aller avec document.defaultView
si vous êtes sûr de sa fenêtre et son accord pour sauter les navigateurs Microsoft Internet Explorer 9. avant
Oui. Rappelez-vous que selon les spécifications, 'document.defaultView' ne doit pas être le même objet que' window' (et, en fait, il est différent dans certains anciens clients, par exemple: Safari 2.x) – kangax
Fonctionne bien pour les documents XUL dans Firefox aussi! merci :) – macguru2000
doc.parentWindow || doc.defaultView, et il fonctionne dans l'ancien IE et Safari –
Eh bien, c'est la solution que je suis allé avec. Cela fonctionne, mais je déteste ça.
getScope : function(element) {
var iframes = top.$$('iframe');
var iframe = iframes.find(function(element, i) {
return top[i.id] ? top[i.id].document == element.ownerDocument : false;
}.bind(this, element));
return iframe ? top[iframe.id] : top;
}
IE seulement je vois ... –
Qu'est-ce que IE seulement à ce sujet? Semble fonctionner correctement dans FF \ Saf \ IE \ Chrome. Cependant, ce n'est pas nécessaire dans tout sauf IE, puisque les autres navigateurs étendent automatiquement les éléments dans la bonne portée. – Joren
Une solution cross navigateur est compliqué, voici comment il le fait dojo (de window.js :: get()):
// In some IE versions (at least 6.0), document.parentWindow does not return a
// reference to the real window object (maybe a copy), so we must fix it as well
// We use IE specific execScript to attach the real window reference to
// document._parentWindow for later use
if(has("ie") && window !== document.parentWindow){
/*
In IE 6, only the variable "window" can be used to connect events (others
may be only copies).
*/
doc.parentWindow.execScript("document._parentWindow = window;", "Javascript");
//to prevent memory leak, unset it after use
//another possibility is to add an onUnload handler which seems overkill to me (liucougar)
var win = doc._parentWindow;
doc._parentWindow = null;
return win; // Window
}
return doc.parentWindow || doc.defaultView; // Window
a ("ie") renvoie true pour IE (et false sinon)
d'abord soyons clairs. ce genre de chose est souvent nécessaire lorsque vous travaillez avec des cadres, iframes, et plusieurs fenêtres, et donc "la fenêtre est juste l'objet global" est une réponse insatisfaisante si tout ce que vous avez un handle est un document de une autre fenêtre deuxième, malheureusement, il n'y a pas direct de manière à obtenir à l'objet de la fenêtre. il y a des moyens indirects.
Le principal mécanisme à utiliser est window.name. Lorsque vous créez une fenêtre ou un cadre à partir d'une fenêtre parente, vous pouvez généralement lui donner un nom unique. tous les scripts à l'intérieur de cette fenêtre peuvent obtenir à window.name. n'importe quel script en dehors de la fenêtre peut accéder à window.name de toutes ses fenêtres enfants.
pour obtenir plus de détails que cela nécessite plus d'informations sur la situation spécifique. Cependant, dans toute situation où les scripts enfants peuvent communiquer avec des scripts parents ou vice versa, ils peuvent toujours s'identifier par leur nom, ce qui est généralement suffisant.
- 1. Comment puis-je obtenir le nom de fichier d'un document Word à partir de C#?
- 2. Comment obtenir des informations de décalage de caractères à partir d'un document PDF?
- 3. Comment imprimer un document Word à partir de C#
- 4. Asp.Net: Javascript Modal Window
- 5. Sélection de pages à partir du document PDF
- 6. Comment référencer un document XML à partir d'un second document XML
- 7. Fenêtre Handle and window dimension
- 8. Comment obtenir User.Identity.Name à partir d'un contrôleur?
- 9. Comment obtenir SelectableChannel à partir d'un InputStream?
- 10. OpenGL cross platform window
- 11. Génération de document XPS à partir d'une application Web
- 12. Meilleur moyen d'ouvrir un document à partir de Java?
- 13. jQuery + Ubiquity: Retourne un objet document à partir d'une URL
- 14. WPF Window LocationChanged terminé
- 15. Téléchargement externe de document à partir du serveur interne
- 16. Extraction de contenu à partir du document MHT
- 17. Chargement de Google Analytics à partir du document jQuery prêt?
- 18. Création de document XML à partir du schéma XSL
- 19. Obtenir SelectedItem à partir de TreeView?
- 20. Window Media PLayer en C#
- 21. window télécharger java
- 22. Comment obtenir un xpathContext à partir d'un xmlNode en python
- 23. Obtenir l'année à partir de boost ptime
- 24. Comment extraire les macros par programme à partir du document OpenOffice.org Writer à l'aide de .NET?
- 25. Comment obtenir DataGridViewRow à partir de l'événement CellFormatting?
- 26. Comment obtenir un nœud XML à partir de XDocument
- 27. Comment obtenir l'élément enum à partir de l'index
- 28. comment obtenir l'adresse MAC d'un client à partir de HttpServlet?
- 29. Comment obtenir de la valeur à partir du haricot Struts?
- 30. Comment obtenir une ligne à partir de R data.frame
Oserais-je demander pourquoi? window est un objet toujours disponible et il n'y a toujours pas plus de 1 document dans une fenêtre, une relation 1-1 pour ainsi dire ... – Colin
Parce que j'utilise un prototype sur plusieurs iframes, et les différentes méthodes Element se brisent dans IE ou Safari si l'élément est en quelque sorte prolongé dans le mauvais champ. J'ai révisé certaines choses pour résoudre ce problème dans le prototype, mais une partie du correctif me demande de trouver à quelle fenêtre appartient un élément. – Joren
@Joren, veuillez considérer de changer pour la réponse acceptée. – kay