Javascript 使用给出错误数字的元素的jQuery offset()获取位置

Javascript 使用给出错误数字的元素的jQuery offset()获取位置,javascript,jquery,cordova,ionic-framework,Javascript,Jquery,Cordova,Ionic Framework,我正在构建一个Cordova应用程序,它使用实时相机预览,我需要位置(相对于整个页面)来放置预览。我用jQuery offset、position和大量其他帖子的建议都没有用 var position = $("#liveCamera").offset(); 或 我期待着{top:250,left:300}附近的东西,但不管我怎么努力,我都会得到{top:50,left:1313.806884765625}!真正奇怪的是,1313的左边实际上不在屏幕上 我试过的其他东西 根据其他建议,我尝试查

我正在构建一个Cordova应用程序,它使用实时相机预览,我需要位置(相对于整个页面)来放置预览。我用jQuery offset、position和大量其他帖子的建议都没有用

var position = $("#liveCamera").offset();

我期待着{top:250,left:300}附近的东西,但不管我怎么努力,我都会得到{top:50,left:1313.806884765625}!真正奇怪的是,1313的左边实际上不在屏幕上

我试过的其他东西

根据其他建议,我尝试查看滚动位置,但两者都等于0

$(document).scrollTop()   // = 0
$(document).scrollLeft()  // = 0
如果我尝试使用
$(“#liveCamera”).position()
而不是offset(),则会得到{top:1,left:0},这显然是错误的

我看到另一篇帖子建议将父母的补偿相加,如下代码所示,但结果同样糟糕:

console.log($("#liveCamera").offset());
console.log($("#liveCamera").parent().offset());
console.log($("#liveCamera").parent().parent().offset());
console.log($("#liveCamera").parent().parent().parent().offset());
console.log($("#liveCamera").parent().parent().parent().parent().offset());
导致

{顶部:50,左侧:1313.806884765625}

{顶部:50,左侧:1313.806884765625}

{顶部:0,左侧:1013.760009765625}

{顶部:0,左侧:1013.760009765625}

{顶部:-1,左侧:1013.760009765625}

1) 如何获得元素相对于整个页面的真实位置

更新

仍然没有运气,我已经尝试了我能想到的一切。我在想,由于这个元素所处位置的深度,很难找到它的位置;但是我不明白为什么要在页面上找到元素的真实位置会如此困难!我不介意使用额外的库或任何方式来完成这项工作


我使用的是AngularJS和Ionic框架,因此所讨论的元素位于应用程序中几层的模板视图中。

CSS位置属性是什么?静态、相对或绝对?如果可用,jQuery将在内部使用。我猜结果是正确的,但可能你使用了某种布局/容器,使它看起来是错误的,因为它隐藏了窗口的滚动条,可能使用了2d变换。@frenchie,它和它的所有父母都是relative@t.niese我尝试使用getboundingClientRect编写自己的js,得到了完全相同的结果。在50x1313不可能是正确的。。。所讨论的元素与屏幕左上方的距离大致相等,大约为屏幕高度和宽度的25%。我不知道Cordova在您的测试环境和布局上使用了哪个WebKit版本,因此无法告诉您为什么会发生这种情况。这可能是所使用的WebKit版本的错误,或者值是正确的。为了找到问题的根源,我会从元素到所有父元素,一直循环到文档,直到
不再是
1013
,然后检查元素的样式值和最后一个具有
1013
位置的样式值是什么(特别是对于
transformation
position
overflow
),我仍然认为问题类似于
transformation
console.log($("#liveCamera").offset());
console.log($("#liveCamera").parent().offset());
console.log($("#liveCamera").parent().parent().offset());
console.log($("#liveCamera").parent().parent().parent().offset());
console.log($("#liveCamera").parent().parent().parent().parent().offset());