SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
YUI3 Rich-Editor

    2010-11-17
       乌龙茶
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
Example
http://kxt.koubei.com/labs/wulong/editor_simple.html
Over! Q&A?
YUI2 Editor
YUI3 Editor
Editor-base

• getContent

• getInstance

• getDomPath

• ……
Editor-Core-plugin

• Selection.js

• exec-command.js

• Frame.js
Create Rich-text Editor - Range

if( window.getSelection ){
   return document.createRange(); //W3C
}else{
   return document.selection.createRange(); //IE
}
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();

 }
W3c range != ie range
 https://developer.mozilla.org/en/DOM/range
 http://kjah.javaeye.com/blog/420624
 http://www.w3help.org/zh-cn/causes/SD9031
Editor-mod-plugin

• List.js

• createLink.js

• tabs.js

• ……
Create plugin - nodeChange

• changedEvent

• changedNode

• changedType

• Commands

• ……
Example – ordered-list
if( e.changedType === 'enter' ) {

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

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

    }

}
Create plugin - ExecCommand.COMMANDS
Y.mix(Y.Plugin.ExecCommand.COMMANDS, {
     insertorderedlist : function(){
           ……
           ……
     }
});


editor.execCommand('insertorderedlist');
Create plugin - Step
var DoSomething = { … };

Y.namespace('Plugin');
Y.Plugin. DoSomething = DoSomething ;

Y.mix( Y.Plugin.ExecCommand.COMMANDS, {
      dosomething : function(){
             DoSomething.do();
             …..
      }
});
Use plugin

var editor = new Y.EditorBase();

editor.plug(Y.Plugin.DoSomething);

editor.execCommand(‘dosomething');
Example
http://kxt.koubei.com/k2/editor/demo/editor.php
Q&A

Weitere ähnliche Inhalte

Was ist angesagt?

webpack 101 slides
webpack 101 slideswebpack 101 slides
webpack 101 slidesmattysmith
 
Webpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JSWebpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JSEmil Öberg
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance PatternsStoyan Stefanov
 
Front End Development: The Important Parts
Front End Development: The Important PartsFront End Development: The Important Parts
Front End Development: The Important PartsSergey Bolshchikov
 
Hash Signaling Made Easy
Hash Signaling Made EasyHash Signaling Made Easy
Hash Signaling Made Easydavidgouldin
 
Packing for the Web with Webpack
Packing for the Web with WebpackPacking for the Web with Webpack
Packing for the Web with WebpackThiago Temple
 
Assignment D
Assignment DAssignment D
Assignment DSongyo
 
Odoo - CMS performances optimization
Odoo - CMS performances optimizationOdoo - CMS performances optimization
Odoo - CMS performances optimizationOdoo
 
アイドルだって WordPressが好き! ~アイドル公式サイトに見るテーマ実装例~
アイドルだって WordPressが好き! ~アイドル公式サイトに見るテーマ実装例~アイドルだって WordPressが好き! ~アイドル公式サイトに見るテーマ実装例~
アイドルだって WordPressが好き! ~アイドル公式サイトに見るテーマ実装例~tecking
 
Testing frontends with nightwatch & saucelabs
Testing frontends with nightwatch & saucelabsTesting frontends with nightwatch & saucelabs
Testing frontends with nightwatch & saucelabsTudor Barbu
 
Backbone.js
Backbone.jsBackbone.js
Backbone.jsVO Tho
 
Webpack Introduction
Webpack IntroductionWebpack Introduction
Webpack IntroductionAnjali Chawla
 
Developing large scale JavaScript applications
Developing large scale JavaScript applicationsDeveloping large scale JavaScript applications
Developing large scale JavaScript applicationsMilan Korsos
 
Introducere in web
Introducere in webIntroducere in web
Introducere in webAlex Eftimie
 

Was ist angesagt? (17)

webpack 101 slides
webpack 101 slideswebpack 101 slides
webpack 101 slides
 
Webpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JSWebpack Tutorial, Uppsala JS
Webpack Tutorial, Uppsala JS
 
Liking performance
Liking performanceLiking performance
Liking performance
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance Patterns
 
Front End Development: The Important Parts
Front End Development: The Important PartsFront End Development: The Important Parts
Front End Development: The Important Parts
 
Hash Signaling Made Easy
Hash Signaling Made EasyHash Signaling Made Easy
Hash Signaling Made Easy
 
Packing for the Web with Webpack
Packing for the Web with WebpackPacking for the Web with Webpack
Packing for the Web with Webpack
 
Assignment D
Assignment DAssignment D
Assignment D
 
Odoo - CMS performances optimization
Odoo - CMS performances optimizationOdoo - CMS performances optimization
Odoo - CMS performances optimization
 
アイドルだって WordPressが好き! ~アイドル公式サイトに見るテーマ実装例~
アイドルだって WordPressが好き! ~アイドル公式サイトに見るテーマ実装例~アイドルだって WordPressが好き! ~アイドル公式サイトに見るテーマ実装例~
アイドルだって WordPressが好き! ~アイドル公式サイトに見るテーマ実装例~
 
Selenium再入門
Selenium再入門Selenium再入門
Selenium再入門
 
Testing frontends with nightwatch & saucelabs
Testing frontends with nightwatch & saucelabsTesting frontends with nightwatch & saucelabs
Testing frontends with nightwatch & saucelabs
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Webpack Introduction
Webpack IntroductionWebpack Introduction
Webpack Introduction
 
Developing large scale JavaScript applications
Developing large scale JavaScript applicationsDeveloping large scale JavaScript applications
Developing large scale JavaScript applications
 
Introducere in web
Introducere in webIntroducere in web
Introducere in web
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 

Andere mochten auch

Andere mochten auch (6)

Banquet 48
Banquet 48Banquet 48
Banquet 48
 
Banquet 51
Banquet 51Banquet 51
Banquet 51
 
Banquet 42
Banquet 42Banquet 42
Banquet 42
 
Banquet 47
Banquet 47Banquet 47
Banquet 47
 
Banquet 49
Banquet 49Banquet 49
Banquet 49
 
Banquet 46
Banquet 46Banquet 46
Banquet 46
 

Ähnlich wie Banquet 50

Lightweight Xtext Editors as SWT Widgets
Lightweight Xtext Editors as SWT WidgetsLightweight Xtext Editors as SWT Widgets
Lightweight Xtext Editors as SWT Widgetsmeysholdt
 
How to create an Angular builder
How to create an Angular builderHow to create an Angular builder
How to create an Angular builderMaurizio Vitale
 
Web Components v1
Web Components v1Web Components v1
Web Components v1Mike Wilcox
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
Intorduction of Playframework
Intorduction of PlayframeworkIntorduction of Playframework
Intorduction of Playframeworkmaltiyadav
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBMongoDB
 
Web Components With Rails
Web Components With RailsWeb Components With Rails
Web Components With RailsBoris Nadion
 
Make JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODIMake JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODIos890
 
GDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App EngineGDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App EngineYared Ayalew
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenerytoddbr
 
jQuery Fundamentals
jQuery FundamentalsjQuery Fundamentals
jQuery FundamentalsGil Fink
 
Jquery dojo slides
Jquery dojo slidesJquery dojo slides
Jquery dojo slideshelenmga
 
Real World Asp.Net WebApi Applications
Real World Asp.Net WebApi ApplicationsReal World Asp.Net WebApi Applications
Real World Asp.Net WebApi ApplicationsEffie Arditi
 
CUST-1 Share Document Library Extension Points
CUST-1 Share Document Library Extension PointsCUST-1 Share Document Library Extension Points
CUST-1 Share Document Library Extension PointsAlfresco Software
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to DjangoJoaquim Rocha
 

Ähnlich wie Banquet 50 (20)

Lightweight Xtext Editors as SWT Widgets
Lightweight Xtext Editors as SWT WidgetsLightweight Xtext Editors as SWT Widgets
Lightweight Xtext Editors as SWT Widgets
 
How to create an Angular builder
How to create an Angular builderHow to create an Angular builder
How to create an Angular builder
 
Web Components v1
Web Components v1Web Components v1
Web Components v1
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
Intorduction of Playframework
Intorduction of PlayframeworkIntorduction of Playframework
Intorduction of Playframework
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDB
 
J query module1
J query module1J query module1
J query module1
 
Web Components With Rails
Web Components With RailsWeb Components With Rails
Web Components With Rails
 
Make JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODIMake JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODI
 
Creation&imitation
Creation&imitationCreation&imitation
Creation&imitation
 
GDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App EngineGDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App Engine
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
jQuery Fundamentals
jQuery FundamentalsjQuery Fundamentals
jQuery Fundamentals
 
The MEAN stack
The MEAN stack The MEAN stack
The MEAN stack
 
Wt unit 5
Wt unit 5Wt unit 5
Wt unit 5
 
Jquery dojo slides
Jquery dojo slidesJquery dojo slides
Jquery dojo slides
 
Real World Asp.Net WebApi Applications
Real World Asp.Net WebApi ApplicationsReal World Asp.Net WebApi Applications
Real World Asp.Net WebApi Applications
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 
CUST-1 Share Document Library Extension Points
CUST-1 Share Document Library Extension PointsCUST-1 Share Document Library Extension Points
CUST-1 Share Document Library Extension Points
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 

Mehr von Koubei UED

Mehr von Koubei UED (20)

Banquet 45
Banquet 45Banquet 45
Banquet 45
 
Banquet 44
Banquet 44Banquet 44
Banquet 44
 
Banquet 43
Banquet 43Banquet 43
Banquet 43
 
Banquet 41
Banquet 41Banquet 41
Banquet 41
 
Banquet 40
Banquet 40Banquet 40
Banquet 40
 
Banquet 39
Banquet 39Banquet 39
Banquet 39
 
Banquet 38
Banquet 38Banquet 38
Banquet 38
 
Banquet 37
Banquet 37Banquet 37
Banquet 37
 
Banquet 36
Banquet 36Banquet 36
Banquet 36
 
Koubei banquet 35
Koubei banquet 35Koubei banquet 35
Koubei banquet 35
 
Koubei banquet 34
Koubei banquet 34Koubei banquet 34
Koubei banquet 34
 
Koubei banquet 33
Koubei banquet 33Koubei banquet 33
Koubei banquet 33
 
Koubei banquet 32
Koubei banquet 32Koubei banquet 32
Koubei banquet 32
 
Koubei banquet 31
Koubei banquet 31Koubei banquet 31
Koubei banquet 31
 
Koubei banquet 30
Koubei banquet 30Koubei banquet 30
Koubei banquet 30
 
Koubei banquet 29
Koubei banquet 29Koubei banquet 29
Koubei banquet 29
 
Koubei banquet 28
Koubei banquet 28Koubei banquet 28
Koubei banquet 28
 
Koubei banquet 27
Koubei banquet 27Koubei banquet 27
Koubei banquet 27
 
Koubei banquet 26
Koubei banquet 26Koubei banquet 26
Koubei banquet 26
 
Koubei banquet 25
Koubei banquet 25Koubei banquet 25
Koubei banquet 25
 

Banquet 50