在当前的最小示例(http://jsfiddle.net/twPHW/)中:
<div style="overflow: hidden; height: 24px;">
<table>
<thead>
<tr>
<td style="background-color: rgb(109,173,157);">foo</td>
</tr>
</thead>
<tbody>
<tr>
<td style="background-color: rgb(236,222,117);">bar</td>
</tr>
</tbody></table>
</div>
“foo”单元格是唯一可见的单元格。然后,如果我执行Ctrl-F(在浏览器中查找功能),并开始键入“bar”,div中的表格将会上升(如果它的顶部更改),以向用户显示匹配的元素。
我希望能够通过查找功能查找“bar”,但我想通过javascript处理该布局修改。
我知道listen for browser "find"是不可能的。我只是想听这个布局修改,以防止它或相应地同步我的其余视图。我试图收听滚动事件或使用Chrome Mutation Observer,但它无效。有什么想法吗?
答案 0 :(得分:0)
我没有对此进行过测试,但是在ctrl + f按键上有一个选项是preventDefault()
,然后制作自己的查找功能版本。
答案 1 :(得分:0)
我认为不可能听取这些布局修改。
当浏览器找到一个元素时,它等同于为匹配的元素调用scrollIntoView
。因此,只有在容器div可滚动时才会触发滚动事件。
在示例中,父样式为overflow: hidden;
。因此它不会触发任何滚动事件。
因此无法听取这些布局更改,因为在overflow:hiden元素上侦听滚动事件的唯一解决方法是listen to mouse wheel event ...
糟糕的故事是,因此无法阻止用户通过浏览器查找修改布局,因为即使可以prevent Ctrl+F or F3,我们也无法阻止用户使用Edit-> Find
菜单Firefox或IE