以下内容摘自新浪邮箱源代码<input _action="write_new" type="button" value="再写一封&gt;&gt;" />点击此按钮他会跳转到写邮件页面但是没有任何js代码,是否是_action="write_new"属性的关系。
而_action在标准的input标签中是没有的,那么这个自定义属性是如何工作的呢?

解决方案 »

  1.   

    自定义属性,故名思意啊,根据你自己的逻辑进行设置,进行操作使用的。随便你设置什么,你不去用,是没什么影响的,就当是费代码,夹杂在html中
      

  2.   

    有可能是交给后台去处理了~··<input>标签没有这个_action  但是可以写上  没错的~·
      

  3.   

    他自定义标签,是方便添加自己特殊的属性而不会和原始的html属性冲突,这样就可以针对特殊标签写特殊事件eg<script>
        window.onload=function(){
            var inputs=document.getElementsByTagName("input");
            for(var i=0;i<inputs.length;i++){
                if(inputs[i]._action=="write_new") inputs[i].onclick=function(){
                    alert("跳转了")
                }
            }
        }
    </script>
    <input _action="write_new" type="button" value="再写一封&gt;&gt;" />
        <input type="button" value="空的">
      

  4.   

    BeenZ,如果有N个不同的_action,你的代码写起来可费劲喽
    我也没看过源代码,不过我猜测应该是对DOM根节点仅注册一个onclick事件,然后根据event.srcElement来取得_action,然后通过switch case 的办法根据不同的_action调用不同的方法
      

  5.   

    补充一点:
    这样的话,不仅input标签可以使用_action,任何标签都可以使用
      

  6.   

    的确,确实不应该使用ByTagName来遍历元素。有更好的提议吗?
    其实不仅仅是sina其他大网站都有见过这样使用属性的。
      

  7.   

    我也给个吧
    <!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">
    <head>
    <title>无标题文档</title>
    </head><body>
    <div onclick="DoAction()">
        在这个div内的元素都可以使用 _action <br/>
        <input type="button" value="button" _action="Hello" />
        <input type="checkbox" />
        <div _action="ShowMe">xxxxxxx</div>
    </div><script language="javascript" type="text/javascript">
        function DoAction(){
            var dom = event.srcElement;
            var action = dom.getAttribute("_action");
            switch (action) {
                case "ShowMe":
                    ShowMe(dom);
                    break;
                case "Hello":
                    Hello(dom)
                    break;
            }
        }
        function ShowMe(dom) {
            alert(dom.innerHTML);
        }
        function Hello(dom) {
            alert("Hello");
        }
    </script>
    </body>
    </html>