代码之家  ›  专栏  ›  技术社区  ›  Moshe

Javascript OnClick跨浏览器友好?

  •  5
  • Moshe  · 技术社区  · 14 年前

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

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

    这是标准方面的“坏习惯”吗?

    它能在IE、FF、Safari和Chrome上工作吗?

    6 回复  |  直到 14 年前
        1
  •  9
  •   Quentin    14 年前

    是的

    这是标准方面的“坏习惯”吗?

    1. 不是的 unobtrusive . 事件处理程序最好与JS一起应用。
    2. 它链接到页面顶部( # )并且总是将浏览器发送到那里,即使JS运行。
    3. 如果JS失败,那么将不会发生任何有用的事情。你应该 build on stuff that works .

    它能在IE、FF、Safari和Chrome上工作吗?

    是的

        2
  •  6
  •   Daniel Vandersluis    14 年前

    尽管有些人可能会说,这是一种不错的做法(需要注意的是,它是您在这个元素上唯一需要的事件侦听器),而且它是添加事件侦听器的最简单(也是最流行的)跨浏览器方法,但是我将对它做两个更改。

    首先,如果没有启用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的用户就不会看到无用的链接)。

        3
  •  2
  •   rfunduk    14 年前

    onclick 是跨浏览器。当然,关于标准和最佳实践的讨论要大得多。大多数人会说“渐进增强”是首选。对此的简单解释是链接仍然会做正确的事情,javascript版本只会改进行为。这对你来说是否重要取决于你在做什么,项目是什么,等等。

        4
  •  0
  •   Michael Robinson    14 年前

    它应该在你提到的浏览器中工作。

    试着养成 ;

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

    如果你不想 # 要在位置栏中显示:

    <a href="#" onclick="doSomething(); return false;">Click here.</a>
    
        5
  •  0
  •   ChrisF    14 年前

    Wikipedia page onClick 在Common/W3C events部分中列出,并且受您提到的浏览器支持。

        6
  •  0
  •   rfunduk    14 年前

    它可以在所有浏览器上运行,但作为一种最佳实践,大多数浏览器都会使用jQuery这样的点击处理程序 $('a').click(doSomething); 这使得JavaScript更加独立于HTML。同样,通过这种方式可以附加多个处理程序并使用jQuery的 live 方法处理程序可以添加到动态添加到页面的HTML元素中。