如何使用javascript通过CKEditor中的编码来搜索单词
How to Search a word through coding in CKEditor using javascript?
谁能告诉我如何使用JavaScript在CKEditor实例中搜索特定单词?我有一个名为搜索的按钮和一个文本框。当我在文本框中键入单词并按下按钮时,它应该在编辑器中找到文本。解决方案必须仅是 JavaScript。
命令find
,但是editor.execCommand( 'find' )
只会显示查找和替换对话框,这不会让您满意。
不幸的是,要复制此对话框的行为,您需要编写自己的搜索 impl,因为其背后的逻辑无法从外部访问(这需要 http://dev.ckeditor.com 票证)。您可以在_source/plugins/find/dialogs/find.js中检查find
插件,但如果没有一些解释,它可能对您没有足够的帮助。
那你需要做什么呢?
首先 - 您需要准确找到文本节点中的文本以及文本的位置 - 这不会是微不足道:)。你必须从editor.document.getBody()
开始,然后按源代码顺序遍历 DOM 树。有一个工具可以帮助您 - CKEDITOR.dom.walker
.
其次 - 你需要创建范围(new CKEDITOR.dom.range( editor.document )
)并设置其startContainer
,startOffset
,endContainer
,endOffset
。以下是有关 W3C 系列的更多信息 - http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html - CKEDITOR 非常相似 - 您可以在 API 文档中找到有关它们的更多信息(抱歉没有发布链接,但由于我的声誉不佳,我无法:D)。
当您设置范围的开始和结束时,您只需调用range.select()
。如果编辑器是专注的(您可以通过调用editor.focus()
来确保这一点)范围将被选中。
将 CKEditor 中的文本提取到一个变量中(如果 CKEditor 本身提供该功能,我不会感到惊讶),然后在提取的文本上运行函数 .indexOf(SubstringToFind)。
instance.GetData()
从 CKEditor 实例中提取数据。
如何找到这个词取决于你,如果它很简单,你可以按照@TomTeman的建议使用.indexOf()
,否则你可能需要一个正则表达式。
- 用程序搜索JQuery数据表中的文本
- 在html Select中添加搜索
- Ajax Live搜索发布到Laravel视图
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- 学生搜索项目jquery/javascript
- 用于搜索的聚合物嵌套绑定
- 在javascript中搜索具有重复值的两个数组中的匹配值
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 使用javascript搜索具有用户输入的数组
- 使用php在html中搜索硬编码的JavaScript变量
- 谷歌位置半径搜索和地理编码
- 如何使用javascript通过CKEditor中的编码来搜索单词
- 如何对谷歌 API 搜索查询进行编码
- 如何在jquery中制作链接,编码实时搜索结果
- 如何在即时搜索结果上编码导航键
- 自动完成搜索,有没有一种方法来编码自动完成搜索,而不使用php
- 当字符编码不同时,从键盘搜索选项
- 限制搜索范围与搜索小部件/地理编码器
- 如何用javascript编码搜索查询
- YouTube API搜索URL编码与多字