Java GWT Element.getAbsoluteLeft和getAbsoluteTop在放大到99%时提供非常大的值
我有一个使用GWT2.3开发的应用程序。getAbsoluteLeft()和getAbsoluteTop()方法用于获取文本框的左侧和顶部位置,如下所示。在正常屏幕中,IE11会返回正确的值(缩放=100%或更多)。但是如果我们把屏幕放大到99%或更低,它会返回一个非常大的值Java GWT Element.getAbsoluteLeft和getAbsoluteTop在放大到99%时提供非常大的值,java,internet-explorer,gwt,Java,Internet Explorer,Gwt,我有一个使用GWT2.3开发的应用程序。getAbsoluteLeft()和getAbsoluteTop()方法用于获取文本框的左侧和顶部位置,如下所示。在正常屏幕中,IE11会返回正确的值(缩放=100%或更多)。但是如果我们把屏幕放大到99%或更低,它会返回一个非常大的值 int left=textbox.getAbsoluteLeft(); int top= textbox.getAbsoluteTop(); 屏幕放大到99%或更小时返回的值 left = 2147483647 top
int left=textbox.getAbsoluteLeft();
int top= textbox.getAbsoluteTop();
屏幕放大到99%或更小时返回的值
left = 2147483647
top = -2147483649
返回的值是最小和最大范围(如果为int)。在这里获得绝对左侧和顶部位置的正确方法是什么。GWT中是否有其他方法可以在IE11中正确完成此操作
在IE8中,它可以正常工作,也可以使用任何缩放百分比值。我不知道这是否有帮助 但是试试看:
private static native double getElementLeft(Element element)
/*-{
var rectObject = element.getBoundingClientRect();
return rectObject.left;
}-*/;
private static native double getElementTop(Element element)
/*-{
var rectObject = element.getBoundingClientRect();
return rectObject.top;
}-*/;
这使用了getBoundingClientRect(),我知道GWT代码getAbsoluteLeft和getAbsoluteTop没有使用它。
使用getBoundingClientRect的好处是,它提供了有时需要的亚像素值(双倍而不是整数)