1. 多级需求和方案设想及其结论

1.1. 当聚焦到对应页面的搜索框时, 按下指定按键可以放置光标到搜索高亮处

1.1.1. 添加按键事件监听

1.1.2. 先按下shift键再按下空格键才能触发前一个功能

1.2. 匹配全文关键字, 位置存到数组中, 然后与机制同步循环光标将会放置的地方

1.2.1. 捕捉用户选择下一个和上一个高亮关键字的动作

  • 测试能不能捕获到用于上一个和下一个动作

1.2.2. 记录下用户触发了多少次上一个和下一个, 将其转换为与当前光标高亮的偏移量

1.2.3. 每次输入, 都要尝试去匹配搜索

1.2.3.1. 利用已有的keyup, 来尝试去匹配搜索

1.2.3.1.1. 获得当前页面的所有文本
  • 通过app.workspace.containerEl.innerText

1.3. 能够在切换高亮的同时适应页面的动态变化

1.3.1. 每次切换上下个高亮的同时也重新匹配页面的关键字, 但依旧沿用上一次的偏移量

1.3.2. 如果对象条属于mod-no-match类的化, 就不用搜索了

1.4. 找到obsidian-search-match-highlight类的元素, 替换其文本为特殊文本, 用来定位, 然后正则匹配即可

2. 调研材料及结论

2.1. 搜索机制:

2.1.1. 结论:

匹配全文的关键字, 然后从光标处开始向后循环切换高亮

2.2. 查找框能触发的按键事件:

2.2.1. 结论:

  1. 除了F功能区, 一般回车什么的都能触发
  2. 还能获取是否按动了shift或Ctrl或Alt键
  3. 不过Shift检测只能用于非功能键上, 如abcd啥的
  4. 不能用单个功能键触发keypress
  5. 每个键都能触发keydown, 组合键一起触发
  6. 每个键都能触发keyup, 组合键分开触发
  7. 一直按住某个键, 会多次触发keydown, 但按住某个键再按另一个键, 则会停止连续触发

2.3. 自定义组合键:

2.3.1. 结论:

2.3.1.1. 用keydown检测增强键

keydown增强按键后, 标记为按下

2.3.1.2. 用keyup检测触发键和增强按键

keyup增强按键后, 标记为弹起 keyup指定按键且增强键为按下状态, 则触发组合键处理函数

2.4. 搜索框的跳转情况:

  1. 输入会重置偏移
  2. 点击改变光标位置, 也会重置偏移

2.5. 怎么字符串转换为正则表达式:

2.6. 怎么聚焦到文本上

2.7. 怎么获取到子节点

3. 随想(未整理)

4. 项目结论

4.1. obsidian中插件无法移除事件, 也无法设置监听器仅用一次

4.2. 通过DOM对象中的hasClass(‘类’)可以判断是否属于某个类

5.