GWT getAbsoluteLeft/Top在FF中返回错误的值
当我调用getAbsoluteLeft/Top方法时,我在firefox中总是得到0。对于IE,我得到一个似乎正确的值。使用这些方法是否存在已知问题?我的问题是我想用另一个元素的绝对位置值来设置一个元素的位置。提前谢谢。编辑:使用GWT2.0.3 库库 编辑测试用例: 1.主机页: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
<!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" > <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,但我认为这不是解决方案。