Vimium: هل هناك طريقة لتعطيل Vimium على صفحتي بصفتي مالك موقع؟

تم إنشاؤها على ١٩ يناير ٢٠١٧  ·  27تعليقات  ·  مصدر: philc/vimium

اعذرني إذا تم الرد على هذا في مكان ما ، لكنني لم أتمكن من العثور عليه في الأسئلة الشائعة أو README.

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

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

التعليق الأكثر فائدة

مجرد أفكار قليلة.

هل يجب أن يكون لدى مشرفي المواقع طريقة لتعطيل Vimium؟

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

هل يجب أن يكون لدى مالكي مواقع الويب طريقة لاكتشاف Vimium؟

  • الإيجابيات: يمكنهم حث المستخدمين على توضيح أن Vimium قد يتداخل مع الوظائف العادية
  • السلبيات: هذا يسهل عملية أخذ البصمات (ولكن قد يكون هذا بالفعل سببًا ضائعًا)

لست متأكدًا مما إذا كان يجب أن يتمتع مشرفي المواقع بأي من الإمكانيات ، ولكن إذا كان لديهم ذلك ، فمن المحتمل ألا يعتمدوا على تفاصيل التنفيذ المصادفة. قد يكون الحل القياسي ، مثل # 2532 هو السبيل للذهاب.

على سبيل المثال ، قد تتضمن الصفحة ما يلي:

<meta name="keybinding" disable="suggest")">
<script>
  document.querySelector('meta[name="keybinding"]').addEventListener('detect', () => {
    console.log('hi vimium user');
  });
</script>

هذا يتيح لمسؤول الموقع

  • كشف فيميوم
  • تعطيل Vimium

سيتعين على Vimium

  • اسمح للمستخدم بتهيئة ما إذا كان يريد

    1. تجاهل العلامة (دع الصفحة تعتقد أن Vimium غير مثبت)

    2. تعطيل Vimium بناءً على خاصية تعطيل التعريف

  • تحقق من وجود علامة وصفية وأرسل حدث اكتشاف إليها
  • أخبر المستخدم أن الصفحة تعطل Vimium

من الناحية النظرية ، يمكن لملحقات ربط المفاتيح الأخرى أيضًا تنفيذ هذه الواجهة حتى لا يضطر أساتذة الويب إلى اكتشاف Vimium و cVim و Surfing Keys و Saka Key و VimFx و Vimari وما إلى ذلك بشكل منفصل.

ال 27 كومينتر

vincentwoo ... ليس حاليا. هذه الميزة تتطلب بعض التفكير بعناية.

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

+1 ستكون إضافة مفيدة حقًا.

يمكنك إرسال رسالة وهمية unload عند تحميل DOM جاهز / نافذة - إذا كان Vimium فقط قد دخل.

هذا المثال الخاص بي: https://jsfiddle.net/2L36ypys/ ، وسترى أنه لا يمكنك استخدام f لتفعيل التلميحات.

يعمل هذا منذ الالتزام adce73cb68f7ca3e3e01ca6fbb08a1008c9c8b90 (2016/04/05).

راجع للشغل ، هل يمكنك تقديم المزيد من القرائن وقد نقوم بحل مثل هذه النزاعات.

أنا لست مستخدم vimium بنفسي ، لذا سأقوم بتثبيته غدًا وأحاول الحصول على تقرير خطأ أكثر واقعية لك. شكرا على المقتطف.

في الواقع ، وفقًا للاختبارات في https://jsfiddle.net/2L36ypys/1/ ، يمكننا إرسال مثل هذه الرسالة من بيئة "المضيف" عندما تكون الصفحة "loading" ، لأن Vimium يقوم بتثبيت unload مستمع الحدث

لكن Vimium ++ الخاص بي لا يستخدم هذا المستمع ولا توجد طريقة سهلة لتدميره بواسطة البرامج النصية للصفحة.

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

فيما يتعلق بهذا ، هناك مشروع عمره عامين لاكتشاف ما إذا كان المستخدم يستخدم Vimium ، قد يكون مفيدًا هنا: https://github.com/EvanHahn/Detect-Vimium

pimlottc لم يعمل الامتداد لمدة عام أو عامين ، لأن Vimium يستخدم "shadowDOM" لإخفاء العقد الخاصة به.

لم أتمكن من إعادة إنتاج المشكلة التي يواجهها مستخدمو vimium على موقعي (ربما لأنني لا أستخدم Vim شخصيًا). هل ما زال على الطاولة إضافة نوع من فئة CSS الخاصة بـ vimium إلى العناصر لتطلب من الامتداد عدم زيادتها؟

هل ما زال على الطاولة إضافة نوع من فئة CSS الخاصة بـ vimium إلى العناصر لتطلب من الامتداد عدم زيادتها؟

لست متأكدًا من أن هذه فكرة رائعة.

من المؤكد أنه قد يتسبب في ارتباك المستخدم إذا لم يعمل Vimium على الإطلاق على بعض المواقع ، ويمكن للمستخدمين بالفعل تعطيل Vimium على موقعك بأنفسهم ، انظر هنا .

أيضًا ، إذا تابعنا فكرتك ، فربما نحتاج أيضًا إلى آلية للمستخدمين لإعادة تمكين Vimium.

على ما يرام. هل هناك طريقة لنا على الأقل لمعرفة ما إذا كان قد تم تمكين Vimium؟ المشكلة هي أن المستخدمين يلوموننا عندما ينكسر شيء ما بسبب تفاعل غريب. تستخدم خدمتي بالفعل سطح تحرير معقدًا للغاية (CodeMirror) ، لذلك أود أن أكون قادرًا على القيام بشيء ما .

إذا كان بإمكان Vimium على الأقل إضافة عنصر على DOM بطريقة ما ، فيمكن على الأقل أن تكون المواقع التي تشير إليهاvincentwoo على علم بأن المستخدم لديه Vimium مثبتًا ويمكنه إظهار رسالة للمستخدم لتذكيره بأنه قد يكون هناك سلوكيات متضاربة عند دمج واجهة مستخدم معقدة في صفحة الويب مع جميع عروض Vimium ، أو حتى تقديم المساعدة في تكوين التطبيق المعني أو Vimium لحلها.

إذا كان بإمكان Vimium على الأقل إضافة قطعة أثرية إلى DOM بطريقة ما ...

نقوم بتحميل Vomnibar مسبقًا على كل صفحة (المستوى الأعلى). يمكننا تخصيص فئة أو معرّف مناسب لها ، على ما أعتقد.

من شأن ذلك أن يساعد بالتأكيد!

@ smblott-github فكرتي هي أن يقوم Vimium بإعادة تسمية عقدة مضيف الظل الخاصة به من <div> إلى اسم آخر ، مثل <vimium-ui> ، وبعد ذلك يكفي البحث عن أطفال <html> لهذا الاسم العلامة. أعتقد أن اسم علامة العنصر المخصص هذا لن يكون مماثلاً لمواقع الويب الأخرى.

فكرتي هي أن Vimium يعيد تسمية عقدة مضيف الظل الخاصة به من <div> إلى اسم آخر ، مثل <vimium-ui> ، وبعد ذلك يكفي البحث عن أطفال <html> عن اسم العلامة هذا .

هذا غير ممكن حاليًا بسبب مشكلة Chromium هذه .

يمكنك اكتشاف مواردنا التي يمكن الوصول إليها عبر الإنترنت. على سبيل المثال:

var xhr = new XMLHttpRequest(),
    vimiumEnabled = false;
xhr.onerror = xhr.onload = function(){vimiumEnabled = xhr.responseText !== "";};
xhr.open("GET","chrome-extension://dbepggeogbaibhgnhhndojpepiihcmeb/content_scripts/vimium.css");
xhr.send()

@ mrmr1993 لا أريد إنشاء عنصر "مخصص" ، فقط HTMLElement باسم علامة مخصصة. العقدة HTMLElement تشبه تمامًا HTMLUnknownElement ولكنها لا تزال تدعم إرفاق shadowRoot.

مجرد أفكار قليلة.

هل يجب أن يكون لدى مشرفي المواقع طريقة لتعطيل Vimium؟

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

هل يجب أن يكون لدى مالكي مواقع الويب طريقة لاكتشاف Vimium؟

  • الإيجابيات: يمكنهم حث المستخدمين على توضيح أن Vimium قد يتداخل مع الوظائف العادية
  • السلبيات: هذا يسهل عملية أخذ البصمات (ولكن قد يكون هذا بالفعل سببًا ضائعًا)

لست متأكدًا مما إذا كان يجب أن يتمتع مشرفي المواقع بأي من الإمكانيات ، ولكن إذا كان لديهم ذلك ، فمن المحتمل ألا يعتمدوا على تفاصيل التنفيذ المصادفة. قد يكون الحل القياسي ، مثل # 2532 هو السبيل للذهاب.

على سبيل المثال ، قد تتضمن الصفحة ما يلي:

<meta name="keybinding" disable="suggest")">
<script>
  document.querySelector('meta[name="keybinding"]').addEventListener('detect', () => {
    console.log('hi vimium user');
  });
</script>

هذا يتيح لمسؤول الموقع

  • كشف فيميوم
  • تعطيل Vimium

سيتعين على Vimium

  • اسمح للمستخدم بتهيئة ما إذا كان يريد

    1. تجاهل العلامة (دع الصفحة تعتقد أن Vimium غير مثبت)

    2. تعطيل Vimium بناءً على خاصية تعطيل التعريف

  • تحقق من وجود علامة وصفية وأرسل حدث اكتشاف إليها
  • أخبر المستخدم أن الصفحة تعطل Vimium

من الناحية النظرية ، يمكن لملحقات ربط المفاتيح الأخرى أيضًا تنفيذ هذه الواجهة حتى لا يضطر أساتذة الويب إلى اكتشاف Vimium و cVim و Surfing Keys و Saka Key و VimFx و Vimari وما إلى ذلك بشكل منفصل.

أنا أيضًا أبحث عن حل لاكتشاف vimium. يبدو اقتراح eejdoowad رائعًا. في غضون ذلك ، أتفق مع @ gdh1995 ، فإن <div> مع معرف / اسم فئة غريب سيحل المشكلة على الفور في الوقت الحالي.

اعتبارًا من vimium v1.59 ، أدناه وظيفة عمل ، ليست موثوقة بالكامل ، نظرًا لعدم وجود معرف موثوق ، إذا كان لديك امتدادات أخرى تقوم بإدراج shadowDom بالطريقة التي يعمل بها vimium ، فسوف ينكسر.

function hasVimium () {
  try {
    const shadowRoot = document.querySelector('html > div').shadowRoot;
    return Boolean(shadowRoot.querySelector('style').textContent.match(/vimium/));
  } catch (e) {
    return false;
  }
}

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

يمكن أن يكون لدينا آلية حيث لا نكتشف Vimium ، ولكن نضيف ، على سبيل المثال ، علامة وصفية على صفحتنا تحتوي على رسالة لعرضها فقط في حالة قيام مستخدم Vimium باستخدام الصفحة ، مع خيار التعطيل. وبالتالي يمكن لـ Vimium تجنب الاكتشاف البسيط ولا نتعلم بالضرورة أي شيء عن المستخدم.

هذا ضروري تمامًا للتطبيق الذي أعمل عليه بسبب أخطاء مثل https://github.com/philc/vimium/issues/2504 . الملخص هو أنه مع تشغيل vimium ، سيبدأ موقع الويب في الاستجابة ، وسيصبح أبطأ وأبطأ مع تكدس معالجات الأحداث.

سيكون من الجيد أن تكتشف مواقع الويب:

  1. أي إصدار vimium يتم استخدامه
  2. ما إذا كان vimium ممكّنًا / معطلًا / معطلًا جزئيًا (وأي مفاتيح).

وسيكون من الرائع أن يقوم موقع الويب بتعطيل vimium بأدب بطريقة واضحة للمستخدمين (بحيث لم تعد أيقونة vimium زرقاء)

mgsloan هل يمكنك تقديم مثال للصفحة ، من فضلك؟ تغيرت طريقة التعامل مع وضع الإدراج بشكل كبير منذ # 2504.

(لست متأكدًا من قيام المواقع بتعطيل Vimium من جانب واحد. قد يكون ذلك محيرًا للغاية.)

@ smblott-github مرحبًا ، شكرًا على الرد! في الواقع يبدو أن مشكلة الأداء قد ولت. رائعة!

هناك مشكلة حيث يكون بعض سلوك الإدخال مختلفًا تمامًا عما يحدث عند تعطيل vimium. سأستفسر وأرى ما إذا كان بإمكاننا مشاركة عنوان url.

أهلا! هل هناك فكرة عن الأساليب التي قد تكون مقبولة من قبل القائمين على صيانة المشروع؟ سنكون على استعداد للتبرع ببعض الوقت لإنجاز ذلك (عدد قليل جدًا من مستخدمي vimium يستخدمون CoderPad) لكن لا يريدون أن يخطو على أي أصابع.

أعتقد أن النقطة الأساسية التي يتوقعها Vimium هي أن يستخدمه جميع المستخدمين دون أي ألم أو إزعاج.

نظرًا لأن موقعك يحتوي على بعض الإجراءات الخاصة التي تختلف مع Vimium ، بما في ذلك esc في مربعات الإدخال ، فهل يجب أن يسمح Vimium "باستبعاد" <esc> في صفحة الخيارات الخاصة به؟

إذا كان الأمر كذلك ، فقد يقوم المستخدمون بتكوينه يدويًا واستعادة إجراءات الموقع (حاليًا ، يبدو أنه لا يمكن استبعاد <esc> ).

لكنني لا أحب فكرة أن يقوم Vimium بتعطيل نفسه عند تلبية الشروط الخاصة. إنه يضر بقيمة Vimium.

بالنسبة لنشر نسخة Vimium ، أنصح:

  • مسار مورد يمكن الوصول إليه عبر الويب يحتوي على سلسلة إصدار Vimium

    • أكثر صحة ، ولكن ليس مناسبًا لمختلف أنواع Vimium

    • على سبيل المثال ، أقوم بإنشاء "Vimium C" ، وله معرف امتداد مختلف ، وبالتالي عناوين URL مختلفة للموارد)

  • أو علامة خاصة <meta> ، أنشأها Vimium وتحتوي على بعض الكلمات مثل "Vimium"

    • أسهل في التحقق ، ولكن قد يتم إساءة استخدامها من قبل البرامج الضارة

يبدو أن التحقق من المستوى الأعلى div لم يعد يعمل لأنه لم يعد مثبتًا حتى يقوم المستخدم بعمل شيء ما.

بعبارة أخرى ، عند تحميل الصفحة ، لا توجد عناصر يمكن الاعتماد عليها

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات