在这里完成YUI新手。

当用户在YUI3文本编辑器控件中键入文本时,我需要为文本背景动态着色,如下所示:


文本的第一行是橙色。
直到以--开头的行之前的所有行均为橙色。
在那之后的所有行,包括以--开头的行,直到以--开头的下一行,都是蓝色。
之后–再次变为橙色,依此类推。


如果第一行以--开头,则仍应为橙色。

用户不得对可视文本样式进行任何手动控制,必须在粘贴时将纯文本插入并重新着色。

用户键入文本时,必须实时更新文本背景色。

例:

橙色橙色
橙子
橙子
-蓝色蓝色
蓝色 -
蓝色
- 橙子
- 蓝色
-橙色橙色
橙子


请指出我从哪里开始研究如何实现这一点。我浏览了这些示例,但还不能完全理解这些内容。

注意:如果您知道适合我需要的更合适的编辑器,请使用任何明智的JS框架。

最佳答案

我认为您要查看的示例是YUI3 nodeChange。对于您的应用程序,您将需要查找“ enter-up” nodeChange事件。然后,您应该能够使用e.dompath中的NodeList来获取要设置样式的正确Node。为了使您入门,请使用以下示例替换示例中的“ logFn”函数:

var logFn = function(e) {
    Y.log('nodeChange Event: ' + e.changedType);
    if (e.changedType === 'enter-up') {
       var pContainerOfNewBr = e.dompath.item(1);
       var pContainerOfPrevLine = pContainerOfNewBr.previous();
       pContainerOfPrevLine.setStyle('backgroundColor', '#0000ff');
       Y.log('nodeChange got enter-up: ' + e.changedType);
    }
};


并将“ on”侦听器更改为“ after”。

editor.after('nodeChange', logFn);


您应该从中看到的是,在一行上单击“ enter”(输入)后,前一行的背景色应变为蓝色。并非完全符合您的要求,但希望朝着正确的方向发展。

警告-富文本编辑器是一个非常复杂的小部件,您可以首次体验YUI3。如果您能很好地掌握YUI3事件和节点,将会更加容易,尽管如果您需要破解实际的RTE代码,可能会遇到很大的挑战。

07-24 17:17