當我提醒值.position().left
時,它在Chrome上返回0。與其他瀏覽器一起返回實際的數字。爲什麼會發生?Chrome中的jQuery位置問題
回答
基於Webkit的瀏覽器(如Chr ome和Safari)僅在圖像完全加載後才能訪問圖像width
和height
屬性。其他瀏覽器只要加載DOM就可以訪問這些信息(它們不需要完全加載圖像以瞭解它們的大小)。
所以,如果你有圖片在您的網頁,使用基於WebKit瀏覽器,你應該在$(window).load
事件觸發後訪問offset
信息,而不是$(document).ready
事件之後。
有時候即使這樣也行不通。另一種選擇是手動設置您的CSS圖像大小。 – 2011-11-10 19:31:19
顯然webkit只能訪問window.load之後的文本寬度和高度屬性。似乎很愚蠢的是,即使Internet Explorer可以正確使用它。我認爲最後一個錯誤是webkit。 – 2014-09-23 21:54:45
有時Webkit可能太快,但它經常在jQuery中處理。您可以使用類似的東西進行調試:
var v, elem = $('.myElement');
window.setTimeout(function() {
v = elem.position().left;
console.log(v);
if (v) {
return false;
}
window.setTimeout(arguments.callee, 1);
}, 1);
這將檢查是否以及何時該位置可用。如果您在無窮遠處記錄「0」,則position().left
「永遠不可用」,您需要在其他地方進行調試。
太好了,謝謝大衛的幫助。 – goksel 2010-02-02 18:19:07
謝謝 - 這也是爲什麼'jQuery.offset()'返回不正確(非零)值的原因 - 它看起來像我的CSS定位導致Chrome兩次(或其他)佈局文檔。調用'offset'過早地返回元素的位置,因爲它們沒有CSS。 – Justin 2011-01-27 12:48:50
+1我昨天有這個問題。即使在簡單的'$(function(){console.log($('img')。position()。top);});'中,位置也是不正確的,'但是在稍後的點擊事件中使用相同的代碼時是正確的。 – andyb 2011-03-27 08:57:22
我有同樣的問題..
我固定它使用:.offset().left
代替。但請注意,是不一樣的: http://api.jquery.com/offset/
.position().left
曾在Chrome在一些測試中,我所做的,使用 比大衛類似的方法(該值可用,因爲 第一次嘗試)。
在我的「真正的」應用程序未能甚至 閱讀點擊事件的位置(這可以消除任何負載 速度問題)。 一些意見(在其他論壇)說可能與 有關,使用display:inline-block
。但我不能 使用inline-block
重現問題。所以它可能是 是另一回事。
通過閱讀http://api.jquery.com/position/的評論,有幾種方法可以解決這個問題。 我找到工作的一個是
Ajaho [主持人]:這個插件功能修復了Chrome的
jQuery.fn.aPosition = function() {
thisLeft = this.offset().left;
thisTop = this.offset().top;
thisParent = this.parent();
parentLeft = thisParent.offset().left;
parentTop = thisParent.offset().top;
return {
left: thisLeft-parentLeft,
top: thisTop-parentTop
};
};
爲我的問題創作奇蹟......謝謝! – 2015-12-11 12:09:24
或許有點過時與錯誤的位置問題 因爲從2010年,但這個問題的日期我在Chrome中定位問題的技巧:
$(window).load(function(){
p = $('element').offset();
// et cetera
});
使用jQuery(窗口).load()而不是jQuery的(文件)。就緒()
我用這個功能來糾正它。
function getElementPosition(id) {
var offsetTrail = document.getElementById(id);
var offsetBottom = 0;
var offsetTop = 0;
while (offsetTrail) {
offsetBottom += offsetTrail.offsetBottom;
offsetTop += offsetTrail.offsetTop;
offsetTrail = offsetTrail.offsetParent;
}
return {
bottom: offsetBottom,
toppos: offsetTop
};
}
對我來說,它的工作僅由body標籤
它執行它加載後的代碼一切
<body>
<div>content</div>
<div class='footer'>footer</div>
.
.
.
<script type='text/javascript>
$(document).ready(function(){
var footer_position = $(".footer").offset().top;
console.log(footer_position);
});
</script>
</body>
- 1. Chrome上的絕對位置問題28.0.1500.72
- 2. CHROME中的jquery html()問題
- 3. 問題jQuery在IE7中的位置
- 4. 閱讀位置指示器 - Chrome問題
- 5. 固定位置背景 - Chrome問題
- 6. Chrome和jQuery問題
- 7. Firefox中的JQUERY Galleria css位置對齊問題。在Chrome中工作正常
- 8. jquery - 在Firefox中獲取位置問題
- 9. Chrome中的Plupload定位問題
- 10. Chrome上的JQuery Ajax問題
- 11. Modernizr和jQuery的Chrome問題
- 12. Chrome和Firefox jQuery的問題
- 13. 與Chrome的JQuery問題
- 14. jQuery的問題位置的方法
- 15. Firefox,Chrome CSS定位問題
- 16. 簡單的django jquery位置問題
- 17. 問題與jQuery和背景的位置
- 18. jQuery的位置片斷問題
- 19. Android中的位置問題
- 20. IOS4中的位置問題
- 21. 在jQuery UI datepicker中的Google chrome問題
- 22. Opera和Google Chrome中的jquery ajax問題
- 23. Chrome中的jquery fileupload插件問題
- 24. jQuery slideToggle在Safari和Chrome中的問題
- 25. 在Chrome中使用jquery-droppable的問題
- 26. IE/Chrome中的jQuery/CSS高度問題
- 27. IE和Chrome中的jquery克隆問題
- 28. Chrome顯示問題與JQuery
- 29. jQuery Ajax和setInterval Chrome問題
- 30. SimpleModal jQuery插件位置問題
這樣閉幕前將JavaScript代碼文檔中準備好,請發佈更多的代碼,特別是你要調用'position'的元素,或者是一些HTML/CSS來查看可能出現的問題。 – 2010-01-31 20:02:15