Puedo obtener window.document pero ¿cómo puedo obtener document.window? Necesito saber cómo hacerlo en todos los navegadores.¿Cómo obtengo el objeto Window del objeto Document?
Respuesta
The Window object is the top level object in the JavaScript hierarchy, por lo que sólo se refieren a ella como la ventana
Editar: Respuesta original antes Promote JS esfuerzo. JavaScript technologies overview en Mozilla Developer Network dice:
En un entorno de navegador, este objeto global es el objeto de la ventana.
Edición 2: Después de leer el comentario del autor a su pregunta (y conseguir downvotes), esto parece estar relacionado con la ventana del documento del marco flotante. Eche un vistazo a window.parent y window.top y quizás los compare para inferir la ventana de su documento.
if (window.parent != window.top) {
// we're deeper than one down
}
Después de 'abrir()' la 'ventana' de la ventana nueva es otra' ventana' que el 'abrelatas'.Si recibe un 'documento' (o cualquier' Nodo') de alguna función, es posible que necesite la ventana original. (Wow esto es muy viejo.) – Rudie
Usted puede ir con document.defaultView
si está seguro de que es una ventana y está bien saltarse los navegadores Microsoft Internet Explorer 9. antes
Sí. Solo recuerde que según las especificaciones, 'document.defaultView' no tiene que ser el mismo objeto que' window' (y, de hecho, es diferente en algunos clientes anteriores, por ejemplo: Safari 2.x) – kangax
Funciona bien para documentos XUL en Firefox también! gracias :) – macguru2000
doc.parentWindow || doc.defaultView, y funciona en viejo IE y Safari –
Bueno, esta es la solución que fui con. Funciona, pero lo odio.
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 solo veo ... –
¿Qué es IE solo al respecto? Parece funcionar bien en FF \ Saf \ IE \ Chrome. No es necesario en cualquier cosa excepto en IE, sin embargo, dado que los otros navegadores extienden los elementos automáticamente en el alcance correcto. – Joren
se complica Una solución de navegadores, así es como lo hace 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
tiene ("decir") devuelve verdadero para IE (y falso de lo contrario)
primero seamos claros. este tipo de cosas a menudo es necesario cuando trabajas con marcos, marcos flotantes y ventanas múltiples, por lo que "la ventana es solo el objeto global" es una respuesta insatisfactoria si todo lo que tienes es un documento otra ventana que el que está adentro.
En segundo lugar, desafortunadamente no hay directa manera de llegar al objeto de la ventana. hay formas indirectas.
el mecanismo principal para usar es window.name. al crear una ventana o un marco desde una ventana principal, generalmente puede darle un nombre único. cualquier script dentro de esa ventana puede acceder a window.name. cualquier script fuera de la ventana puede acceder al window.name de todas sus ventanas secundarias.
para obtener más específico que eso requiere más información sobre la situación específica. sin embargo, en cualquier situación en la que las secuencias de comandos de los niños se puedan comunicar con las secuencias de comandos de los padres o viceversa, siempre pueden identificarse por su nombre, y esto suele ser suficiente.
- 1. ¿Cómo obtengo el objeto org.apache.catalina.connector.Request en Tomcat?
- 2. ¿Los cierres con nombre contaminan el objeto global/window?
- 3. ¿Cómo obtengo los recuentos de fila del objeto Zend_Paginator?
- 4. ¿Cómo obtengo el número de campos en el objeto JavaScript?
- 5. ¿Cómo obtengo el nombre para mostrar de un objeto IdentityReference?
- 6. ¿Cómo puedo encontrar el centro del objeto?
- 7. Python: ¿Cómo obtengo el tiempo de un objeto datetime.timedelta?
- 8. javascript "esto" apunta al objeto Window otra vez
- 9. ¿Cómo obtengo el objeto Método para un método?
- 10. Objeto siguiendo el cursor del mouse
- 11. Cómo quitar el atributo del objeto MongoDb?
- 12. Cómo obtener el valor booleano del objeto
- 13. ¿Cómo puedo enumerar todas las propiedades del objeto Math?
- 14. Tipo de contenido Django: ¿cómo obtengo un objeto?
- 15. ¿Cómo obtengo el nombre del módulo de la definición de clase de un objeto en lugar del nombre del módulo de la instanciación del objeto?
- 16. ¿Por qué este objeto JavaScript no sale del alcance después de $ (document) .ready?
- 17. (objeto) == 0 (objeto) 0
- 18. ¿Listar todas las propiedades del objeto ventana?
- 19. Cómo obtener la URL del objeto en el controlador
- 20. Cómo conseguir tamaño del objeto jQuery
- 21. ¿Cómo obtengo un objeto de caso Scala de Java?
- 22. ¿cómo obtengo un ID único por objeto en Java?
- 23. ventana Javascript objeto
- 24. Creación del objeto GSON
- 25. ¿Las propiedades de configuración en el objeto Window se consideran una mala práctica?
- 26. md5 del objeto pil
- 27. Cómo eliminar el elemento dom del objeto jquery
- 28. ¿El objeto del paquete Scala no trae el objeto complementario dentro del alcance?
- 29. Tamaño total del objeto NSMutableArray
- 30. Autorretrato extraño en el objeto ventana
me atrevo a preguntar por qué? window es un objeto siempre disponible y siempre hay no más de 1 documento en una ventana, una relación de 1-1, por así decirlo ... – Colin
Porque estoy usando prototipos en múltiples iframes, y los diversos métodos de Elemento se rompen en IE o Safari si el elemento de algún modo se extiende en el ámbito incorrecto. He revisado algunas cosas para solucionar este problema en prototipo, pero una parte de la solución me exige encontrar en qué ventana se encuentra un elemento. – Joren
@Joren, por favor considere cambiar a la respuesta aceptada. – kay