我有一個Image控件,我需要在圖片控件的頂部放置一些元素。當我使用getBoundingClientRect()時,它在IE(7,8和9)中工作,但它在Firefox和Chrome中給出了不同的值。是否有任何其他函數可用於獲取元素的邊界矩形?爲什麼getBoundingClientRect在IE和Firefox中給出了不同的值
9
A
回答
11
引文從舊IE文檔getBoundingClientRect
:「在微軟的Internet Explorer 5,窗口的左上角是在2,2-(像素)相對於所述真正的客戶。「這似乎仍然有效。
在IE9中,使用<meta http-equiv="x-ua-compatible" content="ie=edge"/>
將左上角設置爲正確的位置(0,0)。
隨着d4rkpr1nc3的回答,您可以通過其他方法獲取這些值,但結果也取決於使用的瀏覽器。我認爲你需要一個稍微不同的方法來解決這個問題。檢查下面的代碼,它可能會給你一些想法。
<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>
2
你可以使用偏移來做到這一點,就像這樣:
var top = element.offsetTop;
var left = element.offsetLeft;
var width = element.offsetWidth;
var height = element.offsetHeight;
var bottom = top + height;
var right = left + width;
4
值可能在不同的瀏覽器,但getBoundingClientRect()
略有不同的仍然是性能和精確度你最好的選擇。然而,它返回的座標是相對於視口而不是文檔,因此您需要考慮在窗口/文檔上使用滾動值的情況。
下面是關於這一個很好的博客文章:
大衛?馬克是這個東西好。這是他的從comp.lang.javascript尖端:
https://groups.google.com/forum/?fromgroups#!topic/comp.lang.javascript/zWJaFM5gMIQ
相關問題
- 1. 爲什麼在php中使用ip地址給出不同的ip(IE vs Firefox)?
- 2. 爲什麼我的圖標不會出現在Firefox和IE中?
- 3. 相同的腳本,IE與Firefox的不同輸出,爲什麼?
- 4. 爲什麼cout和return在以下C++代碼中給出了不同的值?
- 5. 爲什麼菜單出現在Chrome和FireFox中,但不是IE?
- 6. IE和Firefox中的XPath不同。爲什麼?
- 7. 1和print在awk中給出了不同的輸出爲什麼?
- 8. 爲什麼IE和Firefox爲一個div返回不同的溢出維度?
- 9. 爲什麼這個工作在IE中不同於Firefox?
- 10. 爲什麼我的Aspx頁面在FireFox和IE中呈現不同的HTML
- 11. 爲什麼在IE和Firefox和Chrome瀏覽器中html項目顯示不同?
- 12. 爲什麼IE會給頂端兩個不同的值?
- 13. 在谷歌地圖getBoundingClientRect給出未指定的錯誤在IE
- 14. 爲什麼JQuery不能在IE和FireFox中工作?
- 15. IE中的字體看起來與Firefox和Chrome中的不同...爲什麼?
- 16. 爲什麼getBoundingClientRect在IE8中變慢?
- 17. 列出Select的選項在FF和IE中給出了不同的結果
- 18. 爲什麼eval()在Javascript中給出了未定義的值?
- 19. 什麼是IE和Firefox
- 20. 爲什麼fminsearch和fminunc在進行優化時給出了不同的答案?
- 21. jQuery animate()在Firefox和Chrome/IE中不同
- 22. 網站CSS在IE和Firefox中不同
- 23. 爲什麼同一個方程給出不同的大O值
- 24. 爲什麼Input.GetAxis('Mouse X')在編譯時給出不同的值?
- 25. 爲什麼這個Java代碼給出了不同的答案?
- 26. 爲什麼這個工作在Firefox而不是IE?在IE
- 27. 爲什麼history.go(-1)在IE和webkit瀏覽器中做了不同的事情?
- 28. 爲什麼函數給出了不必要的價值
- 29. 爲ssize_t和SIZE_T給出不同的值
- 30. 爲什麼不同的名字給了我不同的結果?
你怎麼得到ie8給與鉻相同的值? – SuperUberDuper
@SuperUberDuper我的答案的想法是,你可能不能。佈局模型在不同的瀏覽器中是不同的,特別是像IE8這樣的老版本。儘管你可以用數值來計算數值,但最好問你自己的問題,如何做到這一點。 – Teemu
好的謝謝!!!!!!! – SuperUberDuper