Upgrade to Pro — share decks privately, control downloads, hide ads and more …

编辑器设计思路——KISSY Editor

d2forum
July 20, 2012
19k

编辑器设计思路——KISSY Editor

KISSY Editor依托于KISSY的模块化以及组件架构基础设施,整合独有的编辑相关模块,侧重于开放性与扩展性,目前已成为基于 KISSY 最大规模的组件,应用于淘宝的多处业务.本次分享将讲解编辑器的基础原理以及基于KISSY 的大规模组件的模块化开发经验.

d2forum

July 20, 2012
Tweet

Transcript

  1. KISSY Loader dom event node ua base component Html Parser

    & xhtml dtd range selection button select menu Edit API Editor & plugins overlay
  2. • 基于 KISSY – 模块化机制 – 组件基础设施 • 属性 •

    事件 – 使用 KISSY UI KISSY Component KISSY Editor
  3. describe("cloneContents", function () { it(“works for simple text node”, function

    () { var range = new Range(document); range.setStart(text, 2); range.setEnd(text, 5); var f = range.cloneContents(); var newDiv = KISSY.all("<div>").appendTo("body"); newDiv.append(f); expect(myHtml(newDiv)).toBe("345"); }); });
  4. • paste – 过滤 <font face="宋体"></font> <p style="margin: 0cm 0cm

    0pt;" class="MsoNormal"> <span lang="EN-US"> <font face="Calibri"> 123 <b style="mso-bidi-font-weight: normal;"> 456 </b> 789 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p> </font> </span> </p> <font face="宋体"></font>
  5. Html parse <P> style=‘margin:0 pt’ class=‘msoNormal’ <span> lang=‘en-us’ <font> face=‘calibre’

    123 <b> style=‘mso-bidi- font-weight: normal;’ 456 789 <font> face="宋体"
  6. 过滤规则 • Filter 模式 – margin 0 过滤 – 空

    style 过滤 – font 过滤 – 空 span(inline) 标签过滤 – mso 特定名称属性过滤 – ……
  7. Refer • http://docs.kissyui.com • http://www.w3.org/TR/html5/editing.html#attr-contenteditable • http://msdn.microsoft.com/en- us/library/ie/ms535869(v=vs.85).aspx • http://msdn.microsoft.com/en-

    us/library/ie/ms535872(v=vs.85).aspx • http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html • http://dvcs.w3.org/hg/editing/raw-file/tip/editing.html • http://en.wikipedia.org/wiki/Interceptor_pattern