我在我的 GWT WebApp 中添加了一个树。现在,当您单击一个元素时,整个网站都会向下滚动。这通常意味着我失去了对单击对象的关注,因此我必须移动鼠标并再次单击该项目。
当您总是必须在一个项目上单击两次时,这非常烦人。
也许有可能删除这个“自动对焦选项”,或者有人有其他想法?
GWT 2.5.1 有一个新选项来修复滚动到视图中的行为。创建新的 Tree 对象调用后
tree.setScrollOnSelectEnabled(false);
禁用滚动选择。
请记住,之后您的树将始终设置为 (0,0) 滚动位置。这意味着如果树碰巧有滚动条,那可能是个问题(然后它会滚动到顶部,而不是专注于选定的项目)。
也仍然可以滚动到选定的项目,例如,从代码隐藏创建它时:
tree.addItem(treeItem);
treeItem.getElement().scrollIntoView();
虽然在添加和禁用之后动态启用自动滚动(setScrollOnSelectEnabled)可能无法按预期工作
upd:当 treeitem 是启用了自动滚动的小部件时会出现问题。单击项目两次滚动树顶。纯文本还是可以的。
upd2:在某些 IE 中 setScrollOnSelectEnabled(false) 无效,焦点仍然在小部件项目单击上跳跃。原因似乎执行流程最终到达 Element.focus() 导致不正确的行为(由于不正确的元素?)。它从 onSelection(moveFocus=true) 开始。使用 moveFocus=false 很好。要禁用此功能,需要制作自己的 Tree 版本并禁用 moveFocus 并调用 Element.focus() 以获得正确的元素。
但!setScrollOnSelectEnabled(true) 很好,第二次点击时不会跳到顶部!因此解决方法是根据检测到的浏览器启用此设置。