0

我玩弄了一个可以使用 jQuery 的网页设计。现在有一点我需要相反的 Eventwatching,所以我已经通过安装"onnomousemove"事件的 jQuery 例程意识到了这一点。是的,你没看错,一个NOT HAPPENING EVENT.

下面)你可以在 jQuery 中找到我已经工作的解决方案。
这个想法是控制未发生的事件并通过这个额外指定的事件做出反应jQuery.Event

呵呵,我知道最愚蠢的就是用这个来处理"onnoerror"事件。但这不是所希望的。它现在正在工作,我想在这里向前迈出一步。那么我的问题是什么?

它来了:如何触发相同的行为,native Javascript EventListening以便element.addEventListener(...);也可以处理相同的事件?

问题:较新的 Web 浏览器,如 Chrome、Firefox 已经实现了实现CustomEvent这一点的处理,但在较旧的浏览器中应该有一种使用原型的方法。我现在对 jQuery 有点盲目,无论如何,有没有人知道以传统方式生成自定义事件而无需原型.js 或其他库的怪异技巧?即使使用 jQuery 的解决方案也可以,但期望的目标是本机侦听器应该能够处理它。

jQuery:

(function($){
    $.fn.extend({
        // extends jQuery with the opposite Event Listener
        onno:function(eventname,t,fn){
            var onnotimer = null;
            var jqueryevent = {};
            $(this).on( eventname, function(e){
                window.clearTimeout(onnotimer);
                function OnNoEventFn(){
                    jqueryevent = jQuery.Event( "onno"+eventname );
                    $(this).trigger(jqueryevent);
                    e.timeStampVision=e.timeStamp+t;
                    e.timer=t; e.type="onno"+eventname;
                    fn(e);
                }
                onnotimer = window.setTimeout( OnNoEventFn, t);
            });
            return $(this);
        }
    });
})(jQuery);

$(document).ready(function() {
    // installs "onnomousemove" and fires after 5sec if mousemove does not happen.
    $(window).onno('mousemove', 5000, function(e){
        console.log('function fires after:'+e.timer+'ms at:'+e.timeStampVision+'ms with:"'+e.type+'" event, exact fired:', e.timeStamp);
    });
    // installs "onnoclick" and fires after 4sec if click does not happen.
    $(window).onno('click', 4000, function(e){
        console.log('function fires after:'+e.timer+'ms at:'+e.timeStampVision+'ms with:"'+e.type+'" event, exact fired:', e.timeStamp);
    });
    
    // just for demonstration, routine with "onno.." eventnamescheme
    $(window).on('onnomousemove',function(e){
        console.log( 'tadaaaa: "'+e.type+'" works! with jQuery Event',e);
    });
    // same for "onnoclick"
    $(window).on('onnoclick',function(e){
        console.log( 'tadaaaa: "'+e.type+'" works! with jQuery Event',e);
    });
});

// but how to install Custom Events even in older Safari ?
// newer Chrome, Firefox & Opera have CustomEvent.
window.addEventListener('onnomousemove',function(e){
    console.log('native js is watching you',e);
},false);
4

0 回答 0