Monthly Archives: November 2006

href=”javascript:void(0);” considered harmful

今天看到一位Web开发者狂怒的通牒,特地写一篇日记来告诫自己usability和accessibility的重要性。 有时候使用<a>标记仅仅是用来挂载click事件,我们常常这样写: <a href="javascript:void(0);" onclick="doSomething();">click</a> <a href="javascript:void 0;" onclick="doSomething();">click</a> <a href="javascript:;" onclick="doSomething();">click</a> <a href="javascript:void doSomething();">click</a> 这些写法利用javascript“协议”和void运算符来告诉浏览器“这个链接哪里都不去”,从而取消<a>作为“超级链接”的作用。不过会带来一些问题,尤其是用于打开popup windows时: 不能使用右键菜单中的open in new window 不能把链接地址加入收藏夹 状态栏会显示出最终用户搞不懂的“代码”,他们会认为“出错了” 一旦脚本下载不完整或浏览器仅用了JavaScript,网页会非常sb 更为严重的是,在IE中会导致一些你永远也猜不出原因的古怪问题。例如IE6中,用这种方法挂载的事件处理函数中改变img的src属性,浏览器不会显示图片,必须在右键菜单中点show picture才能显示,我们在做计算机技能大赛投票页面时就遇到了这个问题,当时只好用setTimeout来work around。Brian也遇到过类似问题。 youngpup提出的打开popup window方案: <a href="http://google.com/&quot; onclick="window.open(this.href, ‘popupwindow’, ‘width=400,height=300,scrollbars,resizable’); return false;" >Click…</a> 其中,return false起到的就是preventDefault和stopPropagation作用。对于一般情况: <a … Continue reading

Posted in Web | 7 Comments