我可以在所有浏览器中使用以下内容吗?
<a href="#" onclick="doSomething()">Click here.</a>
关于标准,这是“不良做法”吗?
它适用于IE,FF,Safari和Chrome吗?
答案 0 :(得分:9)
我可以在所有浏览器中使用以下内容吗?
是
关于标准,这是“不良做法”吗?
“不良做法”和“标准合规”是不同的事情。它符合标准,但由于三个原因,还有不良做法。
#
)并始终将浏览器发送到那里,即使JS运行。它适用于IE,FF,Safari和Chrome吗?
是
答案 1 :(得分:6)
尽管有些人可能会说,但实践并不坏(需要注意的是它是你想要的唯一事件监听器),并且它是添加事件监听器的最简单(也是最普遍)的跨浏览器方式,但是我会对它做出两处改变。
首先,如果未启用Javascript,则该链接将无用(尽管#
href将使浏览器滚动到页面顶部,这可能是不可取的)。同样,启用Javascript后,单击该链接仍会导致浏览器关注href,然后向上滚动。
相反,我会使用这样的东西:
<a href="[url to JS-less way of doing the same thing]" onclick="doSomething(); return false">Click here</a>
或者,如果它确实只是一个javascript的东西,你可以使用CSS默认隐藏链接并使用Javascript使其可见(这样禁用JS的用户将看不到无用的链接)。
答案 2 :(得分:2)
onclick
是跨浏览器的。当然,关于标准和最佳实践的讨论要大得多。大多数人会说'渐进增强'是首选。对此的简单解释是链接仍然会做正确的事情,javascript版本只会改善行为。这对你来说是否重要,取决于你在做什么,项目是什么等等。
答案 3 :(得分:0)
它应该适用于您提到的浏览器。
尝试养成在每个Javascript'行'末尾添加;
的习惯:
<a href="#" onclick="doSomething();">Click here.</a>
虽然没有它可以正常运行,但是如果你养成了这个好习惯,那么当你编写更大的脚本时,你可以省去自己的麻烦。
如果您不希望{* 1}}显示在位置栏中:
#
答案 4 :(得分:0)
此Wikipedia page onClick
列在Common / W3C事件部分中,并受您提及的浏览器支持。
如果不是这样,那么大多数Web应用程序都无法在这些浏览器上运行。
答案 5 :(得分:0)
它适用于所有浏览器,但作为最佳实践,大多数附加点击处理程序,如jQuery的$('a').click(doSomething);
,这使得JavaScript更加独立于HTML。另外,可以附加多个处理程序,并且可以将jQuery的live
方法处理程序添加到动态添加到页面的HTML元素中。