这个Prototype的端口是否正确?

blu*_*blu 8 javascript jquery prototypejs

我们的代码将在用户闲置一段时间后运行.(doStuff重置倒计时)

Prototype中的现有代码:

Event.observe(window, 'mousemove', function() { doStuff(); });
Event.observe(window, 'scroll', function() { doStuff(); });
Event.observe(window, 'click', function() { doStuff(); });
Event.observe(window, 'focus', function() { doStuff(); });
Event.observe(window, 'blur', function() { doStuff(); });
Event.observe(window, 'keypress', function() { doStuff(); });

Event.observe(document, 'mousemove', function() { doStuff(); });
Event.observe(document, 'scroll', function() { doStuff(); });
Event.observe(document, 'click', function() { doStuff(); });
Event.observe(document, 'focus', function() { doStuff(); });
Event.observe(document, 'blur', function() { doStuff(); });
Event.observe(document, 'keypress', function() { doStuff(); });
Run Code Online (Sandbox Code Playgroud)

我想用这个JQuery替换它:

 $(document).ready(function() {
     $(document).bind("mousemove scroll click focus blur keypress", doStuff);
 });
Run Code Online (Sandbox Code Playgroud)

它检查我测试它,但任何人都可以确认我不必进行文档/窗口检查,或者我没有忽略其他任何东西?谢谢.

Dou*_*ner 15

关闭,这是一个完整的端口(已添加window),不需要文档就绪测试:

 $([document, window]).bind("mousemove scroll click focus blur keypress", doStuff);
Run Code Online (Sandbox Code Playgroud)

您可以将数组传递给jQuery函数,因此您设置的内容适用于多个项目.在这种情况下,您已经引用了windowdocument.这是您在一次通话中完成此操作的方法.

但是,我不认为需要所有原始的Prototype代码.例如,focus并且blur不适用于documentclick,mousemove并且keypress不需要window.

这可能更符合您的要求:

$(window).bind("focus blur scroll", doStuff);
$(document).bind("click mousemove keypress scroll", doStuff);
Run Code Online (Sandbox Code Playgroud)

不需要DOM已准备就绪:是不需要的DOM准备测试,因为你已经可以访问documentwindow立即.等待DOM准备就绪是不必要的.