0

jQuery を使用できる Web デザインをいじってみました。反対の Eventwatching が必要な時点が来ているので、"onnomousemove"イベントをインストールする jQuery ルーチンですでにそれを認識しています。はい、あなたは正しく読みましたNOT HAPPENING EVENT

() jQuery で既に動作している私のソリューションを見つけます。
アイデアは、発生しないイベントを制御し、この余分な指定を介してそれに反応することですjQuery.Event

へへへ、"onnoerror"これでイベントを処理するのが最もばかげていることはわかっています。しかし、それは望ましくありません。現在は機能しており、ここで一歩前進したいと考えています。それで、私の問題は何ですか?

ここに来ます:同じイベントを処理できるnative Javascript EventListeningように、同じ動作を起動するにはどうすればよいですか?element.addEventListener(...);

問題: Chrome や Firefox などの新しい Web ブラウザーには、CustomEventこれを実現するための処理が実装されていますが、古いブラウザーでは、プロトタイプなどを使用する方法が必要です。私は少し jQuery に目がくらんでいますが、prototype.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