作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图根据他的 ID 在模型中找到一个元素。查看文档,似乎 Matcher类可以做我需要的。
但是,我无法创建 Matcher 实例,并且那里的所有示例仅展示了如何使用 Matcher,而没有展示如何创建实例。
抱歉,这是一个愚蠢的问题,但我该如何创建一个新的 Matcher 实例?
最佳答案
如果你想对模型进行操作,那么你应该使用与engine/model
相关的类。你说的Matcher
属于engine/view
,不适合模型运行。
如果你想遍历模型并对其进行操作,那么你可以使用 TreeWalker类(class)。您只需在整个模型上创建范围,或在开头创建起始位置。
另一种选择是获取 root element并遍历它的 children递归地。
例如,您可以这样使用 tree walker:
const txt = ( editor => {
const position = new Position( editor.model.document.getRoot(), [ 0 ] );
const walker = new TreeWalker( { startPosition: position } );
for ( const element of walker ) {
// do sth with 'element'
// but be careful on element boundaries
}
return outputText;
} )( this.editor );
您可以在此处递归遍历子级,其中 rootElement
可用作入口元素。
function getAllTextFromElementAndChildren( element ) {
if( element.is( 'text' ) ){
return elemen.data;
}
let text = '';
for ( const child of element.getChildren() ) {
const childText = getAllTextFromElementAndChildren( child );
text += childText;
}
return text;
}
关于javascript - 如何在 CKEditor5 中创建一个 Matcher 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56763824/
我是一名优秀的程序员,十分优秀!