Javascript OnClick跨浏览器友好?

Mos*_*she 6 javascript cross-browser

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

<a href="#" onclick="doSomething()">Click here.</a>
Run Code Online (Sandbox Code Playgroud)

这是标准方面的"不良做法"吗?

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

Que*_*tin 9

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

这是标准方面的"不良做法"吗?

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

  1. 这不是不引人注目的.事件处理程序更适用于JS.
  2. 它链接到页面顶部(#)并始终在那里发送浏览器,即使JS运行.
  3. 如果JS失败,那么没有任何有用的东西会发生.你应该建立有用的东西.

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

  • 使用事件处理程序属性不是"不显眼"的事实与标准无关.实际上,事件处理程序属性(例如`onclick`**)在HTML 4规范中是**标准化的. (2认同)
  • "不良做法"和"标准"是不同的事情.我会澄清答案. (2认同)

Dan*_*uis 6

尽管有些人可能会说,但实践并不坏(需要注意的是它是你在这个元素上唯一需要的事件监听器),并且它是添加事件监听器的最简单(也是最普遍)的跨浏览器方式,但是我要做的两个改变.

首先,如果没有启用Javascript,链接将无用(尽管#href会使浏览器滚动到页面顶部,这可能是不可取的).同样,启用Javascript后,单击该链接仍会导致浏览器跟随href,并向上滚动.

相反,我会使用这样的东西:

<a href="[url to JS-less way of doing the same thing]" onclick="doSomething(); return false">Click here</a>
Run Code Online (Sandbox Code Playgroud)

或者,如果它确实只是一个javascript的东西,你可以使用CSS默认隐藏链接并使用Javascript使其可见(因此禁用JS的用户将看不到无用的链接).