منع السلوك الافتراضي في المستمعون الرئيسيون في YUI
-
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);
}
نصائح أخرى
وأنا مجرد تخمين هنا ولكن لا أعتقد أنه يمكن القيام به.
إذا كان من الممكن بالتأكيد لا ينبغي أن يكون. اختصارات لوحة المفاتيح العامة هي شيء يجب أن لا تعبث مع. ماذا بعد؟ ربط زر إغلاق النافذة لفتح نافذة جديدة ...
ومع ذلك، لأنه يتم استخدام معظم المستخدمين لتلك الضغط على المفاتيح فعل شيء معين في المتصفح (نافذة جديدة في المثال الخاص بك)، وأنا دائما تجنب المواجهات، وهو ما يعني في الواقع أنا لا أستعمل أي من الفوقية أو مراقبة مفاتيح.
وأنا ببساطة استخدام الحروف، من تلقاء نفسها، وهذا أمر جيد حتى يكون لديك مربعات إدخال النص، وحتى هذا القليل من النصائح قد تكون أقل فائدة لك.
وعلى الرغم من تجاوز اختصارات المتصفح الافتراضي ليست تافهة، في بعض الحالات يجدر القيام بذلك لأنه يعطي نظرة أكثر مهنية من التطبيق. نلقي نظرة على هذا البرنامج النصي:
http://www.openjs.com/scripts/events /keyboard_shortcuts/index.php#disable_in_input
وتبين للعمل بشكل جيد بالنسبة لي ..