منع السلوك الافتراضي في المستمعون الرئيسيون في YUI

StackOverflow https://stackoverflow.com/questions/166127

  •  03-07-2019
  •  | 
  •  

سؤال

ولدي صفحة على شبكة الإنترنت حيث كنت ترغب في إعادة رسم خريطة السيطرة + N لسلوك مختلف. تابعت سبيل المثال YUI للتسجيل المستمعين مفتاح ويتم استدعاء الدالة بلدي ولكن فايرفوكس لا يزال يخلق نافذة متصفح جديدة. يبدو أن الأمور تعمل بشكل جيد على IE7. كيف أتوقف عن إطار جديد من الظهور؟

مثال:

var kl2 = new YAHOO.util.KeyListener(document, { ctrl:true, keys:78 },
             {fn:function(event) {
                     YAHOO.util.Event.stopEvent(event); // Doesn't help
                     alert('Click');}});
kl2.enable();

ومن الممكن إزالة السلوك الافتراضي. محرر مستندات Google يتجاوز السيطرة + S لحفظ المستند بدلا من تنشئة في فايرفوكس حفظ الحوار. حاولت المثال أعلاه مع السيطرة + S ولكن الحوار حفظ فايرفوكس لا يزال للملوثات العضوية الثابتة. منذ جوجل يمكن أن يوقف حفظ الحوار من الخروج أنا متأكد من أن هناك وسيلة لمنع معظم اختصارات لوحة المفاتيح الافتراضية.

هل كانت مفيدة؟

المحلول

والخدعة هي وظيفة "الجبهة الوطنية" هو اجتز.

وتجريبيا، يمكنك أن ترى أن نوع الوظيفة للFN يأخذ معلمتين. والمعلمة الأول يحتوي في الواقع نوع من الحدث. والثاني يحتوي ... وهذا هو مجنون: مجموعة تحتوي على التمثيل البرمجي في الفهرس 0 والكائن الحدث الفعلي في الفهرس 1

وهكذا تغيير التعليمات البرمجية حول قليلا، فإنه <م> يجب تبدو مثل هذا:

function callback(type, args)
{
    var event = args[1]; // the actual event object
    alert('Click');

    // like stopEvent, but the event still propogates to other YUI handlers
    YAHOO.util.Event.preventDefault(event);
}
var kl2 = new YAHOO.util.KeyListener(document, { ctrl:true, keys:78 }, {fn:callback});
kl2.enable();

وأيضا، لمحبة ثغة، لا تستخدم نقاط التشفير الخام في التعليمات البرمجية. استخدام 'N'.charCodeAt (0) بدلا من "78". أو الانتهاء من ذلك بوصفها وظيفة

function ord(char)
{
    return char.charCodeAt(0);
}

نصائح أخرى

وأنا مجرد تخمين هنا ولكن لا أعتقد أنه يمكن القيام به.

إذا كان من الممكن بالتأكيد لا ينبغي أن يكون. اختصارات لوحة المفاتيح العامة هي شيء يجب أن لا تعبث مع. ماذا بعد؟ ربط زر إغلاق النافذة لفتح نافذة جديدة ...

<ع> استخدام الحدث YUI في UTIL، قد تتمكن من محاولة واستخدام stopEvent الأسلوب:

ومع ذلك، لأنه يتم استخدام معظم المستخدمين لتلك الضغط على المفاتيح فعل شيء معين في المتصفح (نافذة جديدة في المثال الخاص بك)، وأنا دائما تجنب المواجهات، وهو ما يعني في الواقع أنا لا أستعمل أي من الفوقية أو مراقبة مفاتيح.

وأنا ببساطة استخدام الحروف، من تلقاء نفسها، وهذا أمر جيد حتى يكون لديك مربعات إدخال النص، وحتى هذا القليل من النصائح قد تكون أقل فائدة لك.

وعلى الرغم من تجاوز اختصارات المتصفح الافتراضي ليست تافهة، في بعض الحالات يجدر القيام بذلك لأنه يعطي نظرة أكثر مهنية من التطبيق. نلقي نظرة على هذا البرنامج النصي:

http://www.openjs.com/scripts/events /keyboard_shortcuts/index.php#disable_in_input

وتبين للعمل بشكل جيد بالنسبة لي ..

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top