Tengo un control de imagen y necesito colocar algunos elementos sobre el control de imagen. cuando utilicé getBoundingClientRect() está trabajando en IE (7,8 y 9) pero está dando diferentes valores en Firefox y Chrome. ¿Hay alguna otra función disponible para obtener el rectángulo delimitador de un elemento?por qué getBoundingClientRect da valores diferentes en IE y Firefox
Respuesta
Cita de la documentación de edad IE para getBoundingClientRect
: "En Microsoft® Internet Explorer 5, superior izquierda de la ventana está a 2,2 (píxeles) con respecto a la verdadero cliente ". Esto todavía parece ser válido.
En IE9 el uso de <meta http-equiv="x-ua-compatible" content="ie=edge"/>
"establece" la esquina superior izquierda en su posición correcta (0,0).
Como respondió d4rkpr1nc3, puede obtener esos valores por otros métodos, pero los resultados también dependen del navegador utilizado. Creo que necesitarás un enfoque ligeramente diferente a este problema. Verifique el código a continuación, podría darle algunas ideas.
<DIV id="imagecontrol" style="position:absolute;width:200px;height:200px;">
<DIV id="topleft" style="position:absolute;width:100px;height:100px;left:0px;top:0px;"></DIV>
<DIV id="topright" style="position:absolute;width:100px;height:100px;right:0px;top:0px;"></DIV>
<DIV id="bottomleft" style="position:absolute;width:100px;height:100px;left:0px;bottom:0px;"></DIV>
<DIV id="bottomright" style="position:absolute;width:100px;height:100px;right:0px;bottom:0px;"></DIV>
</DIV>
Usted podría utilizar compensaciones de hacer eso, así:
var top = element.offsetTop;
var left = element.offsetLeft;
var width = element.offsetWidth;
var height = element.offsetHeight;
var bottom = top + height;
var right = left + width;
Realmente no. Por ejemplo, 'getBoundingClientRect' tiene en cuenta las transformaciones de CSS. – tillda
De hecho no: offsetTop es la posición relativa a un elemento primario posicionado si hay uno, por lo que cualquier elemento primario con posición: relativo/fijo/absoluto afectará el valor de desplazamiento (frente al valor de desplazamiento del cuerpo de domo, que es lo que generalmente queremos) – dougwig
Esto resolvió un problema para mí cuando intentábamos usar 'range.getBoundingClient()' de un iFrame oculto y Firefox & IE estaban devolviendo todos los ceros (0) para x/y/width/height. @ d4rkpr1nc3 thx! –
Los valores tal vez ligeramente diferentes en distintos navegadores, pero getBoundingClientRect()
sigue siendo la mejor opción para el rendimiento y la precisión. Sin embargo, las coordenadas que devuelve son relativas a la ventana gráfica en lugar de al documento, por lo que deberá contabilizar eso utilizando valores de desplazamiento en la ventana/documento.
He aquí una buena entrada en el blog acerca de esto:
David Mark es bueno en estas cosas. He aquí un consejo suyo de comp.lang.javascript:
https://groups.google.com/forum/?fromgroups#!topic/comp.lang.javascript/zWJaFM5gMIQ
- 1. ¿Por qué IE da errores inesperados al configurar innerHTML
- 2. window.onmousemove en IE y Firefox
- 3. IE Document Mode tiene diferentes valores predeterminados en diferentes servidores
- 4. ¿Cómo es que getComputedTextLength() da diferentes resultados en Chrome y Firefox?
- 5. Firefox y Chrome dan valores diferentes para offsetTop
- 6. ¿Por qué el objeto javascript muestra valores diferentes en la consola en Chrome, Firefox, Safari?
- 7. Error iframe y Firefox/IE
- 8. ¿Por qué hashlib y hmac generan diferentes valores hash?
- 9. ¿Por qué este código devuelve valores diferentes? (C# y VB.NET)
- 10. Cómo desplazar Firefox y IE en WatiN?
- 11. IE comentarios condicionales y Chrome/Firefox
- 12. ¿Por qué este cálculo de punto flotante da resultados diferentes en máquinas diferentes?
- 13. CSS: ¿borde azul en IE y Firefox solamente?
- 14. ¿por qué diferentes respuestas?
- 15. ¿Por qué el modificador "g" da resultados diferentes cuando test() se llama dos veces?
- 16. jQuery UI error de tamaño variable (?) En Firefox y IE
- 17. ¿Por qué jQuery .css ('left') y .position(). Left devuelven valores diferentes?
- 18. javascript date getYear() devuelve resultados diferentes entre IE y Firefox, ¿cómo abordar esto?
- 19. -webkit-box-reflect en firefox y IE - CSS
- 20. Content-disposition siendo ignorado en IE 9 y Firefox 13
- 21. Firefox contra IE: manejo innerHTML
- 22. ¿Por qué window.print está imprimiendo todas las páginas en IE pero solo una página en Firefox?
- 23. ¿Por qué Tabindex no funciona con Firefox?
- 24. ¿Por qué ToLookup y GroupBy son diferentes?
- 25. innerHtml funciona en IE y Firefox, Chrome, pero no
- 26. cómo obtener un desplazamiento personalizado en Firefox y IE?
- 27. diferentes valores devueltos por ulimit -r
- 28. ¿Por qué ". *" Y ". +" Dan resultados diferentes?
- 29. URL codificada con corchetes. comportamiento diferente en Chrome/Firefox/IE
- 30. ¿Por qué re.findall() me da resultados diferentes que re.finditer() en Python?
¿cómo se obtiene ie8 para dar los mismos valores que cromo? – SuperUberDuper
@SuperUberDuper La idea de mi respuesta es que probablemente no puedas. El modelo de diseño es diferente en diferentes navegadores, especialmente en los antiguos, como IE8. Sin embargo, puede hacer cálculos matemáticos con el valor, pero es mejor hacer su propia pregunta sobre cómo hacerlo. – Teemu
ok gracias !!!!!!! – SuperUberDuper