听取浏览器Ctrl + F /查找布局修改

时间:2013-11-12 18:44:34

标签: javascript google-chrome

在当前的最小示例(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,但它无效。有什么想法吗?

2 个答案:

答案 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