@ZEAL Blog·厉
WWW Zeal Blog
We stand alone,
TOGETHER.

attribute.specified属性

Posted by zeal on 2006-06-15 00:04 , 1576 characters |  + 0 - 0   English
转载请保留本行原始出处声明信息 : http://www.zeali.net/entry/388 MaDe1nZEAL
标签 ( WebDev ):  ,  ,  , 

  Pivot 自带的 wysiwyg 编辑器功能比较少,扩展起来也不方便,虽然 1.3 版本引入TinyMCE ,但都不合自己的习惯。好在可供选择的 wysiwyg 在线编辑器多得数不过来, Genii Software 甚至专门对这些编辑器做了详细对比。最终 我选择了 "excellent and easy to use" 的 Xinha 。不过再好的东西也会有 bug (尽管有时候 javascript 的脚本所谓 bug 往往是拜浏览标准的混乱所赐)。

  最近发现用 Xinha 切换到 HTML Source 模式添加了图片 Map 区域之后( <AREA title="点击查看大图" shape="RECT" target="_blank" coords="0,0,81,150" href="http://www.zeali.net/images/lina/lina1.jpg"> ),切换回 wysiwyg 模式再切回来,AREA Tag 的 shapecoords 属性就消失了。一路跟踪下来,发现 Xinha 在 Toggle HTML Source 的过程中,使用了 HTMLArea.getHTMLWrapper 方法对整个内容进行了格式化处理,这其中用到了 attribute.specified 属性进行判断:

    if (!a.specified && !(root.tagName.toLowerCase().match(/input|option/) && a.nodeName == 'value')) {
        continue;
    }

  而让人想不通的是,对于 shapecoords 这两个属性来说,无论是否在 HTML 里面进行了设置, specified 的值都是 false ,而不是像 msdn 文档里面所描述的那样 “An attribute is specified if it is set through HTML or script”,只有像 title , target, href 这种比较常规的属性才能通过 specified 的值来判断是否已经做了设置。也正因为如此, Xinha 在对 HTML 代码进行重新格式化的时候, shapecoords 这两个属性的相关内容就被直接 continue 给忽略掉了。

  有意思的是从 Xinha 上面的那段代码来看,已经对 inputoption 这两个 Tag 的 value 属性进行了排除,可见 value 属性遭受的“不公平”待遇类似于 shapecoords 。可惜 Xinha 好事没做到底,msdn 貌似也没有明确的指出哪些 Tag 的哪些属性无法通过 specified 的值来判断存在与否,所以也只能是发现一例例外就在原来的语句基础上增加一个过滤语句了:

    ... &&
    !(root.tagName.toLowerCase() == 'area' && a.nodeName.toLowerCase().match(/shape|coords/))

  搞定,收工。

Last Modified on 2007-05-28 12:40
没有评论.
日志存档
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
本 Blog 原创内容
遵循以下授权:

Creative Commons
(创作共用) CC

署名-非商业性
-相同方式分享
ZEAL Blog 基于
Powered byPivot - 1.24.1: 'Arcee'
Pivot1.24.1
开发
系统部署于
Linode.com
Launched @
2005-04-27
Since 2005.04.27  梦想 就像鸡蛋 要么孵化 要么臭掉RSS Feed (Entries) | About me | Back To Home | @ZEAL | zbird.com | 沪ICP备05024379号