论坛首页 Web前端技术论坛

[nicEdit专题]bkLib,$BK , Function closur and __

浏览 2561 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-05-03  

bkLib :

这个是BK写的一些很实用的函数了,看看里面的函数好像只有一个不常见,

camelize 

这个是 驼峰风格 的字符串转换函数,看看他的规则很简单,就是如果如果字符串里面出现 - 号,就把 - 删除,并把紧跟后面的字母替换为大写, 驼峰风格真是个形象的比喻.
使用这个函数的原因是DOM对象中有个
currentStyle,他对于样式属性的命名规则是 驼峰风格的,比如 background-color被写成backgroundColor,就是这样。

$BK :

这个函数对象很有意思,看代码是根据ID返回一个DOM对象或者进一步DOM对象扩展为 bkElement 对象。
这种写法叫什么呢?步进?我不知道.

Function closur :

函数闭包,设计了两个函数, closur, closureListener .
关于闭包的详细资料您可以自己去查查资料,不过这里的闭包作用是绑定触发对象,
前面我们看到
nicEdit有对事件Event进行自己的封装,她的事件是可以外部触发(代码触发)的,很明显通过外部触发的事件的触发者this,并不是我们期望的对象本身,而是外部触发的对象。因此需要把我们期望的对象绑定到触发事件,闭包在这起了作用。
我们接着看源代码发现,所有的addEvend实例代码都用闭包做为参数。呵呵我们使用的时候当他透明好了。除非你自己制作扩展,那一定要明白闭包的作用了。

__ :

这个函数目前太简单了,就是返回参数自身,看看__在源代码里的使用,好像传入的参数都是字符串,做什么用呢?I18N,国际化了。作者虽然没有给出另外lang的例子,不过我们知道I18N的接口已经留下了。
现在就让我们实做一个zh-CN的翻译吧。最简单的方法是什么呢?当然是直接把翻译写入__函数内部,不过这样就不是I18N,而是zh-CN了。
我们做个小小的扩展为nicEdit增加一个nicEditorI18N的对象使用起来就像下面代码的实例

 if (nicEditorI18N==undefined) {
      nicEditorI18N={};
   }
   nicEditorI18N['zh-CN'] = {
      'Click to Bold' :'加黑',
      'Click to Italic' :'倾斜',
      'Click to Underline' :'下划线',
      'Left Align' :'左对齐',
      'Center Align' :'中间对齐',
      'Right Align' :'右对齐',
      'Insert Ordered List' :'有序列表',
      'Insert Unordered List' :'无序列表',
      'Select Font Size' :'字体大小',
      'Select Font Family' :'字体样式',
      'Select Font Format' :'字体格式',
      'Click to Subscript' :'下标',
      'Click to Superscript' :'上标',
      'Click to Strike Through' :'删除线',
      'Remove Indent' :'减少缩进量',
      'Indent Text' :'增加缩进量',
      'Horizontal Rule' :'水平线',
      'Change Text Color' :'更改文字颜色',
      'Change Background Color':'更改背景色',
      'Add Image' :'添加图片',
      'Edit HTML' :'编辑 HTML',
      'Add Link' :'添加链接',
      'Remove Link':'移除链接'
   };
 

可以把它存储为zh-CN.js,在调入nicEdit的其他js之前先调入他(也许是其他的语言),我们还需要表明所使用的语种
设定一个变量就行了。

var nicEditorLang='zh-CN';

 最后我们改写__

var __=function(s){
   if(nicEditorLang && nicEditorI18N)
      return nicEditorI18N[nicEditorLang][s] || s;
   else
      return s;
}

 

你也许会问,怎么用 zh-CN ,不用 zh_cn 呢?
你当然可以用zh_cn了,我用zh-CN的目的很简单就是因为标准的语种定义应该在html标签里写上xml:lang="zh-CN"的,如果我们写的都这么标准的话,就不用定义nicEditorLang这个变量了,直接取这个xml:lang就行了。

路有很多条,反正是扩展嘛,要自己动手的怎么做看你的选择了。

论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics