Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GWT getAbsoluteLeft/Top在FF中返回错误的值_Gwt - Fatal编程技术网

GWT getAbsoluteLeft/Top在FF中返回错误的值

GWT getAbsoluteLeft/Top在FF中返回错误的值,gwt,Gwt,当我调用getAbsoluteLeft/Top方法时,我在firefox中总是得到0。对于IE,我得到一个似乎正确的值。使用这些方法是否存在已知问题?我的问题是我想用另一个元素的绝对位置值来设置一个元素的位置。提前谢谢。编辑:使用GWT2.0.3 库库 编辑测试用例: 1.主机页: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta

当我调用getAbsoluteLeft/Top方法时,我在firefox中总是得到0。对于IE,我得到一个似乎正确的值。使用这些方法是否存在已知问题?我的问题是我想用另一个元素的绝对位置值来设置一个元素的位置。提前谢谢。编辑:使用GWT2.0.3

库库

编辑测试用例: 1.主机页:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>Web Application Starter Project</title>
  <script type="text/javascript" language="javascript" src="samplegwt/samplegwt.nocache.js"></script>
  <script type="text/javascript" language="javascript">
   function execute() {
    var element = document.getElementById("paragraph");    
    if (element != undefined)
        element.style.display = "block";
   }
</script>
<STYLE TYPE="text/css">
#paragraph {
    display: none;
}
</STYLE> 
</head>
 <body class="body" onload="execute()">
   <div align="center">
    <table>
     <tr>
      <td>
       <p id="paragraph">
       <input type="text" id="example" value="Foobar" >&nbsp;<a href="#"><img border="0" src="images/some.gif"  alt="Test"></a></p>
      </td>
      </tr>
     </table>
</div>
  </body>
 </html>

Web应用程序启动程序项目
函数execute(){
var元素=document.getElementById(“段落”);
if(元素!=未定义)
element.style.display=“块”;
}
#段落{
显示:无;
}

在onModuleLoad()中,我只需执行以下操作:
System.out.println(Document.get().getElementById(“段落”)

.getAbsoluteLeft())

正如评论中所述,问题在于元素不可见,这导致IE和FF的两种不同行为。

你能发布一些示例代码吗?哇。。当我读到你的问题时,我已经在家了,但我想我知道DOM结构,所以我可以构建一个简单的测试用例。当我不知怎么做的时候,一切都如期进行。经过几次测试后,我很确定原因是我试图获取absoluteLeft值的元素具有这种样式。显示:无,在身体负荷时显示:块。我已经做了一个小例子,我会尽快附上。我不知道为什么它在IE中工作(意思是返回一个适当的左值),但在FF中不工作。在这种情况下,你需要非常小心,以免遇到一些恶劣的比赛条件。放置脚本标记和CSS的顺序(如果链接到外部文件而不是内联CSS)可能决定JavaScript是否在布局发生之前触发。IE可能在您的CSS显示之前在ModuleLoad上运行:none生效,为您提供原始值。FF很可能在CSS显示之后才触发onModuleLoad:在主体的onload之前没有点击,给你0,这在显示为none时是正确的。是否可以在完成所有操作后执行onModuleLoad。我的脚本将被注入到页面中,我无法控制将使用哪些其他脚本或css。所以我想最安全的方法是最后一个被处决的人。我最初的想法是至少包含nocache.js,但我认为这不是解决方案。