| 网站首页 | 模板 | 资料 | 源码 | 工具 | 开发 | 设计 | 安全 | 项目 | 网络 | 图片 | 系统 | 数据库 | 博客 | 会员中心 | 小说 | 
MYFTP 精品资料下载
网络学院
学习资料
源码模版
您现在的位置: 精品下载 >> 开发 >> 网站开发 >> CSS技术 >> 文章正文 用户登录 新用户注册
HTML Form issue            【字体:
HTML Form issue
作者:佚名    文章来源:不详    点击数:    更新时间:2007-12-18

    因兼容DOM0的关系,form被设计成支持直接可通过name直接access到control.例如如有一个<input name="user"/>则可直接使用形如document.forms[0]["user"],或在没有特殊字符的情况下,可以直接document.forms[0].user.

    然而这造成一个问题,即name若与form上的方法或属性冲突的话(例如form具有length属性,而同时给form增加一个name为length的控件),会如何?

    经过我的测试,在IE(XP下的6.0)和FireFox(1.5)中,name都会覆盖原来的属性或方法。也就是优先向前兼容。

    作为一种权衡,这种做法本无确定的好坏。但问题是这种行为,在编写脚本中,name与方法冲突下,会产生令developer意想不到的奇怪行为。而且没有在我看到的任何文档中记录。(或许我孤陋寡闻,有方法可以避免?)特别是在IE中,对于Element和一些内置方法的toString()居然都不负责任的返回“[object]”,一旦发生问题,完全令人毫无头绪。

    比如,我正好有个脚本要检测form中是否含有特定name的control,而IE的form恰好有个额外的item方法,结果是我必须为此特别处理:

    control = myForm[name];if (typeof control == "undefined" ||(name == "item" && control == "[object]"))

    ……

    当然,实际上我应该为所有form的属性和方法做特别检测。

    显然,为了脚本能正常运行,不应该允许任何name的屏蔽(试想name为action、method、submit、reset等的情况)。然而要网页设计者记住一大堆应为form scripting保留的名字是不现实的。

    所以结论是:这种向前兼容是错误的设计决策。

    注:将其作为bug向mozilla提交了。不知会有什么回应。

文章录入:chqnet    责任编辑:chqnet 
  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    使用html表格和CSS进行混合网
    Html网页页面head区规范知识
    两分钟做个xhtml+css的网站首
    实用HTML文件的增强标记
    JDK 6.0--总述及XML的新标
    采用XHTML和CSS设计可重用可
    HTML中小meta的大作用
    HTML特殊字符显示
    HTML标记全集
    HTMLCSS教程
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)