@
casparchen #2 这是不可能的。我写了一个例子
http://codepad.org/8fMDMr4Q无论是 Chrome 还是 Edge 都无法用这段代码正确代替浏览器的 Ctrl+F,如下现象:
1. 虽然 JS 能够发现 Ctrl+F,但是浏览器搜索框仍然会弹出。
2. 这段代码并不能正确检查 Ctrl/Alt/Shift/Windows 的状态。如果你按住其中一个键并用鼠标或者其他方式取消 window 的焦点,则代码将以为那个键仍然按下。
例如当你按 Ctrl+F 时,焦点转移到浏览器的搜索框,松开 Ctrl、关闭搜索框之后,再次按 F,代码会以为你按了 Ctrl+F。
此外,即使你通过截获 Ctrl+F 替换了浏览器的搜索框,你也无法保证:
1. 这个浏览器用 Ctrl+F 而不是别的热键激活搜索框(提示:Edge 可以用“查找下一个”也就是 F3 激活搜索框)
2. 用户真的会用 Ctrl+F 激活搜索框,而不是通过其他方式(提示:Edge 可以用 … | Find on page 激活搜索框)
答案:不要尝试干扰前端能够做的之外的事情。