JavaScript的 - 活动 - 在什么地方呢?(javascript - events - w

2019-11-04 04:25发布

我跳周围的JS开发者社区,我们可以解决这个共识:

我们应该声明或的onclick,...的onkeyup等..我们的HTML文档内部外部事件?

1)我不喜欢让他们分开。 真正。 2)我也知道,HTML5增加了对游戏的一些新的互动元素...

问候,MEM

Answer 1:

理想的情况是,如果你可以定义自己的事件代码,并附上这些事件来匹配不同的JS文件的元素。 独立JS和HTML何地可能。



Answer 2:

考虑阅读有关非侵入式JavaScript和jQuery的 。



Answer 3:

编写事件处理程序内嵌一直稳固坏主意了至少十年。

甚至访问像'element.onkeyup的属性是一个非常糟糕的主意。

使用监听器。 更重要的是一个框架。

编辑:这里的原因添下的评论是荒谬的:

  1. 如果任何编程的决定的理由开头:“如果你知道你永远只能将需要......”那就不要去做 。 认真。

  2. “所有可编写脚本的浏览器”,其实就是IE5.5 + FF2 +的Safari 3+歌剧院9+。 这涵盖了互联网用户的99%以上,并且所有这些浏览器的支持事件侦听器。 事件侦听器有超过访问事件处理性能主要优点 - 大之一是,可以有任何事件不止一个监听器。 在现代Javascript编程这一切发生的时间。 特殊套管代码中使用陈旧的事件处理系统,只是因为你可以是一个可怕的想法,敌对真正的好点子喜欢使用图书馆和写作不显眼的,一致的代码。

  3. return false; 是一种反直觉的牢固和防语义的方式来表示“停止冒泡/传播此事件上/下DOM树。” 你知道什么是直觉? 在库代码中常见的表情像event.stop()



Answer 4:

目前流行的观点是,一切都必须不显眼,这意味着该事件处理程序的性能如someElement.onclick = function(e) { ... }; 在被广泛皱起眉头,作为事件处理程序等属性<input type="button" onclick="doSomething()">被彻底驳回。 事实上,有两个有效的用途。

从内容单独行为(如脚本事件处理程序)的愿望是自然的,是一个重要的考虑因素,但不应是唯一的考虑。 如以下摘要中,创建事件处理程序的三种方法都有各自的优点和缺点,以及在特定情况下,行为和内容的分离可能不是最重要的问题。

总之,对于一个给定的任务,使用适合您的需求,最简单的方法。


事件处理性能

myElement.onclick = function(e) { alert("Clicked"); };

这些是用于把一个事件处理程序,你在剧本创作和一定将只需要一个听众的元素特别有用。

好处

  • 分离的内容的行为
  • 适用于所有编写脚本的浏览器
  • 工程在所有浏览器一样,除了在哪里事件对象来自(问题window.event在IE浏览器,其他浏览器的功能参数)
  • 防止使用默认浏览器行为的普遍支持方法return false

缺点

  • 允许特定对象和事件只有一个监听器
  • 上在HTML源元件,处理程序通常不分配直至文档加载

事件处理程序的属性

<input type="button" value="test" onclick="alert('Clicked');">

这是唯一可行的办法时,重要的是之前该文档已完成加载(见的元素响应事件http://peter.michaux.ca/articles/the-window-onload-problem-still更长的讨论这个的)。 此外,它添加事件处理程序最简单的方法。

好处

  • 适用于所有编写脚本的浏览器
  • 工程在所有浏览器相同
  • 一旦元素被渲染工作
  • 添加事件处理程序最简单的方法
  • 防止使用默认浏览器行为的普遍支持方法return false
  • 一个非常简单的页面,它是最可读的方法
  • 标准化在HTML 4规范

缺点

  • 融合了内容的行为
  • 允许特定对象和事件只有一个监听器

的addEventListener /的attachEvent

(未示出的attachEvent当量)实施例

myElement.addEventListener("click", function(e) { alert("Clicked"); }, false);

这是一个可以让你多个监听器连接到一个特定事件的特定对象的唯一方法。 addEventListener在标准化DOM 2级事件规范 。

好处

  • 分离的内容的行为
  • 允许多个事件监听器
  • addEventListener是一个现代化的标准,在IE 9,意味着目前所有的主流浏览器将在IE 9的发布支持支持

缺点

  • 稍微复杂正确地实施跨浏览器
  • IE浏览器的attachEvent并不完全等同于addEventListener
  • 上在HTML源元件,处理程序通常不分配直至文档加载


文章来源: javascript - events - where to place them?