[ckeditor4] 遍历两个dom之间的node

原创
2022/10/28 11:20
阅读数 53

用法:domIterator(range.startContainer, range.endContainer) 代码:

	function domIterator(startNode, endNode, ctx ) {
		ctx = ctx || {
			exitNode: endNode,
			ret: [],
			exit: false,
			findingParentNext: false
		};
		var node = startNode;
		var ret = ctx.ret;

		if (ctx.exit) {
			return ret;
		}

		do {
			if (!node.equals(ret[ret.length - 1])) {
				ret.push(node);
			}

			if (!ctx.findingParentNext && node.getChildCount && node.getChildCount()) {
				domIterator(node.getFirst(), node.getLast(), ctx);
				if (ctx.exit) {
					break;
				}
			}

			if (node.equals(ctx.exitNode)) {
				ctx.exit = true;
				break;
			}

			if (node.equals(endNode)) {
				break;
			}
			if (node.getNext()) {
				ctx.findingParentNext = false;
				node = node.getNext();
			} else {
				var parent = node.getParent();
				if (parent.equals(ctx.exitNode)) {
					ctx.exit = true;
					break;
				}
				if (parent.getNext()) {
					ctx.findingParentNext = false;
					node = parent.getNext();
				} else {
					ctx.findingParentNext = true;
					node = parent;
				}
			}
		}
		while (node);

		return ret;
	}
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部