首页 文章

autocomplete属性没有通过XHTML 1.0 Transitional验证,为什么?

提问于
浏览
3

我正在尝试清理我的xhtml验证 - 我正在通过W3C验证器运行我的页面 . 出于某些令人费解的原因,它没有使用autocomplete =“off”属性传递输入字段:

<input name="kwsearch" id="sli_search_1" type="text" autocomplete="off" onfocus="if(this.defaultValue==this.value) this.value='';"
            onblur="if(this.value=='')this.value=this.defaultValue;" class="searchbox" value="Search" />

我正在使用这个doctype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

这是验证错误:

第410行,第81栏:没有属性“自动完成”

... li_search_1“type =”text“autocomplete =”off“onfocus =”if(this.defaultValue == thi ...

我认为这对W3C来说没问题 - 但也许它还处于_2480769阶段? http://www.w3.org/Submission/web-forms2/#autocomplete

思考?

5 回答

  • 0

    Web表单规范与HTML 4 / XHTML无关 . 遗憾的是, autocomplete 不会通过验证 .

    我认为实现关闭自动完成的有效HTML 4 / XHTML的唯一方法是使用JavaScript在页面加载时添加属性 . 很糟糕,我知道 - 但我认为这是唯一的方法 .

  • 0

    autocomplete是HTML5 attribute,因此如果需要,请使用HTML5文档类型声明 .

  • 1

    W3C链接用于Web表单,而不是核心XHTML . 可以为Web表单提供额外的DTD并使页面进行验证 .

  • 5

    如果您需要自动填充(浏览器支持),请尝试扩展您的doctype,如下面的XHTML 1.1中所示:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [ <!ATTLIST form autocomplete (on|off) #IMPLIED> ]>

  • 5

    我刚刚反对浏览器和标准之间的这种恼人的冲突 . 我最终通过在页面上运行javascript, not 等待 window.onLoad$(document).ready() ,将属性添加到类 no-browser-autocomplete 的所有元素 . 然后我通过我的应用程序删除 autocomplete="off" 并添加此类而不是 .

    显然,在没有运行javascript的浏览器环境中,这将失败 .

    我在页面上而不是在dom ready块中执行此操作的原因是,如果您等待dom准备就绪,浏览器已经自动完成了它,至少在Firefox中(我正在测试它) .

    所以,这是我在我的应用布局中包含的一个javascript文件的开头:

    //this needs to run BEFORE all of the loaded/ready events fire, that's why it's not in the dom.ready function
    $(".no-browser-autocomplete").attr("autocomplete", "off");
    
    $(function(){ 
      //dom ready
    });
    

相关问题