banquet 50

21
YUI3 Rich-Editor 2010-11-17 乌龙茶

Upload: koubei-ued

Post on 31-May-2015

672 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Banquet 50

YUI3 Rich-Editor

2010-11-17 乌龙茶

Page 2: Banquet 50

Create Rich-text Editor

• Iframe. designMode = ‘on’

• otherElement. contentEditable = "true“

• execCommand – Bold createLink delete formatBlock forwardDelete insertImage insertHTML

insertLineBreak insertOrderedList insertOrderedList insertParagraph insertText italic redo selectAll subscript superscript undo unlink unselect vendorID

https://developer.mozilla.org/en/Migrate_apps_from_Internet_Explorer_to_Mozilla#Rich_text_editing

Page 3: Banquet 50

Example

http://kxt.koubei.com/labs/wulong/editor_simple.html

Page 4: Banquet 50

Over! Q&A?

Page 5: Banquet 50

YUI2 Editor

Page 6: Banquet 50

YUI3 Editor

Page 7: Banquet 50
Page 8: Banquet 50

Editor-base

• getContent

• getInstance

• getDomPath

• ……

Page 9: Banquet 50

Editor-Core-plugin

• Selection.js

• exec-command.js

• Frame.js

Page 10: Banquet 50

Create Rich-text Editor - Range

if( window.getSelection ){

return document.createRange(); //W3C

}else{

return document.selection.createRange(); //IE

}

Page 11: Banquet 50

Create Rich-text Editor - Range

if (window.getSelection){//W3C

var range = document.createRange(),

selection = window.getSelection();

range.setStart(selection.anchorNode, selection.anchorOffset);

range.setEnd(selection.focusNode, selection.focusOffset);

return range;

}else { //IE

return document.selection.createRange();

}

Page 13: Banquet 50

Editor-mod-plugin

• List.js

• createLink.js

• tabs.js

• ……

Page 14: Banquet 50

Create plugin - nodeChange

• changedEvent

• changedNode

• changedType

• Commands

• ……

Page 15: Banquet 50

Example – ordered-list

if( e.changedType === 'enter' ) {

if ( e.changedNode.test('li , li *') ){

newLi = inst.Node.create('<li></li>');

}

}

Page 16: Banquet 50

Create plugin - ExecCommand.COMMANDS

Y.mix(Y.Plugin.ExecCommand.COMMANDS, {

insertorderedlist : function(){

……

……

}

});

editor.execCommand('insertorderedlist');

Page 17: Banquet 50

Create plugin - Step

var DoSomething = { … };

Y.namespace('Plugin');

Y.Plugin. DoSomething = DoSomething ;

Y.mix( Y.Plugin.ExecCommand.COMMANDS, {

dosomething : function(){

DoSomething.do();

…..

}

});

Page 18: Banquet 50

Use plugin

var editor = new Y.EditorBase();

editor.plug(Y.Plugin.DoSomething);

editor.execCommand(‘dosomething');

Page 19: Banquet 50

Example

http://kxt.koubei.com/k2/editor/demo/editor.php

Page 20: Banquet 50
Page 21: Banquet 50

Q & A