这是不引人注目的JavaScript的缺点之一吗?

时间:2012-11-02 17:11:07

标签: javascript jquery unobtrusive-javascript

将内联javascripts添加到html标签(例如onclick,onsubmit ...等)被认为是不好的做法。

<form id="form1" onsubmit="return validate();">
...
</form>
<a id="link1" href="http://www.google.com/" onclick="return popup();">Link1</a>

但是,如果我们像下面这样做,可能是validatepopup函数没有被调用,因为用户在调用dom ready函数之前与页面交互了吗?

<form id="form1">
...
</form>
<a id="link1" href="http://www.google.com/">Link1</a>
<script type="text/javascript">
$(document).ready(
    function(){
        $('#form1').submit(
            //validate
            function(){...}
        );
        $('#link1').click(
            //popup
            function(){...}
        );
    }
);
</script>

2 个答案:

答案 0 :(得分:1)

如果您的方法位于外部文件中,则无论您如何附加方法,都可以在加载脚本之前访问表单。这是一个小的权衡,可以更容易地维护和分离关注点。

答案 1 :(得分:1)

您始终可以将其设置为已禁用,然后使用ready事件仅在事件绑定后才启用它们。

请注意,如果您尝试遍历其中的DOM,HTML中的onxxx可能会尝试访问尚不存在的内容,这可能会导致错误,并且比让用户等待一小部分内容更糟糕一秒钟。