当前位置:  开发笔记 > 前端 > 正文

Chrome的jQuery位置问题

如何解决《Chrome的jQuery位置问题》经验,为你挑选了4个好方法。

当我提醒值时.position().left,它在Chrome上返回0 .使用其他浏览器,它返回实际数字.为什么会这样?



1> Luca Fagioli..:

基于Webkit的浏览器(如Chrome和Safari)只有在图像完全加载后才能访问图像widthheight属性.只要加载DOM,其他浏览器就可以访问这些信息(他们不需要完全加载图像就知道它们的大小).

因此,如果您的页面中有图像,使用基于Webkit的浏览器,则应offset$(window).load事件触发后访问信息,而不是在事件发生后访问$(document).ready.


有时甚至它不起作用.另一种选择是在您的CSS中手动设置图像大小.
显然webkit只能在window.load之后访问文本宽度和高度属性.看起来愚蠢甚至Internet Explorer也能做到.我认为最后一个错误的是webkit.

2> user227353..:

通过阅读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
    };
};



3> David Hellsi..:

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则"从不"可用,您需要在其他地方进行调试.



4> lepe..:

我有同样的问题..

我用它来修复它:.offset().left相反.但要注意不一样:http: //api.jquery.com/offset/

.position().left 在我做过的一些测试中,我使用类似于大卫的方法在Chrome中工作(从第一次尝试开始就可以获得该值).

在我的"真实"应用程序甚至读取点击事件的位置失败(这可能消除任何加载速度问题).一些评论(在其他论坛中)说它可能与使用有关display:inline-block.但是我无法使用重现问题inline-block.所以它可能是另一回事.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有