Javascript OnClick跨浏览器友好?

时间:2010-08-19 21:39:55

标签: javascript cross-browser

我可以在所有浏览器中使用以下内容吗?

<a href="#" onclick="doSomething()">Click here.</a>

关于标准,这是“不良做法”吗?

它适用于IE,FF,Safari和Chrome吗?

6 个答案:

答案 0 :(得分:9)

  

我可以在所有浏览器中使用以下内容吗?

  

关于标准,这是“不良做法”吗?

“不良做法”和“标准合规”是不同的事情。它符合标准,但由于三个原因,还有不良做法。

  1. 不是unobtrusive。事件处理程序更适用于JS。
  2. 它链接到页面顶部(#)并始终将浏览器发送到那里,即使JS运行。
  3. 如果JS失败,那么什么都不会有用。你应该build on stuff that works
  4.   

    它适用于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元素中。