隐藏文本中的Ctrl+F:显示文本
Ctrl+F in hidden text: reveal the text
我有多个行,但只有第一个可见的容器(overflow:hidden
)。这个容器点击一下就可以展开。(参见https://stackoverflow.com/a/6972830和jsFiddle http://jsfiddle.net/JUtcX/2/)
如果有人对不可见行的文本执行Ctrl+F,浏览器会报告匹配,但不会显示它(因为它是隐藏的)。
我如何对Ctrl+F作出反应并打开容器是否在其中搜索了不可见的文本?
(更新)不满足所有要求的方法:
- 监听Ctrl+F。
- 我有多个容器,只想扩展那些包含搜索短语。在监听Ctrl+F时,我只能一次打开所有容器。
- 不能在所有系统上工作。不过,这只是一个可以忽略不计的缺陷。
- chrome专用解决方案(link)
- 至少也应该支持Firefox
你可以这样做:
function find(e) {
if (e.ctrlKey && e.keyCode == 70) {
document.getElementById("hide").style.display = "block";
}
}
document.addEventListener('keyup', find, false);
#hide{
display: none;
}
<div>
ASDF:
<div id="hide">
Hidden
</div>
</div>
- 监听浏览器Ctrl+F/查找布局修改
我认为不可能听到那些布局修改。
当浏览器找到一个元素时,相当于调用匹配元素的scrollIntoView。因此,滚动事件将是仅当容器div可滚动时触发。
在示例中,父样式是overflow: hidden;确实如此不触发任何滚动事件。
就不可能听到这些布局的变化,因为唯一的解决方法是监听滚动事件溢出:隐藏元素,是监听鼠标滚轮事件…
糟糕的是,这样就不可能阻止用户修改布局通过浏览器查找,因为即使一个也可以如果不使用Ctrl+F或F3,我们无法阻止用户使用编辑->查找菜单
JBE
- 从浏览器中监听事件"查找"JavaScript中的窗口
我不知道有什么方法可以监听一个find-like事件,如果这在任何浏览器中都支持,这肯定不是一个可移植的解决方案。
我也不知道你想达到什么目的,但我认为你的最好的选择是监听触发查找的键盘事件窗口,并在尝试模拟用JavaScript编写查找工具栏/窗口。然而,这是一个由于某些浏览器的原因,这是一项艰巨的(几乎不可能的)任务根据本地化自定义键盘快捷键(for例如,在IE中,en-US使用Ctrl+F(用于查找)而pt-PT使用Ctrl+L(对于Localizar,意思是查找))
结束语:我认为你运气不好……
米格尔·文图拉
-
搜索文本(Ctrl+F)跨隐藏范围
-
Chrome搜索功能(ctrl+f)发现隐藏文本(但它's不可见!)
- 为什么在页面上单击的先前链接的文本显示在 AJAX 请求中
- JavaScript NaN错误,输入文本显示为NaN
- 关于socket.io实时文本显示的问题
- 如何使用javascript使文本显示在文本字段中
- 在它们之间切换时,jQuery 文本显示在活动文本下方
- 使用 ajax 乱码文本显示图像
- 带有文本显示js功能的图像映射 - 某些部分不显示
- 来自 Ajax 请求的文本显示不正确
- 如何使用 JavaScript 使文本显示
- 是否可以将元素内部的文本显示在 ::在 css 之前
- on更改文本框的文本显示在另一个文本框上
- 在文本显示在Scroll上之前在页面上隐藏文本的问题
- 使用带文本显示的Jquery切换文本
- 如何使文本显示速度变慢
- 如何将图片添加到点击计数器文本显示<图像><点击量>
- 文本显示有延迟
- 根据在另一个文本框中输入的文本显示文本框中的文本
- 如何从点击文本显示文件浏览器,并在悬停文本时将鼠标光标更改为指针
- 使文本显示为几行可点击的线条
- 如何使文本显示