Greasemonkey: إضافة GM_notification API

تم إنشاؤها على ٢٠ سبتمبر ٢٠١٠  ·  26تعليقات  ·  مصدر: greasemonkey/greasemonkey

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

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

لمعلوماتك...
تم حلها ثابتة
https://bugzilla.mozilla.org/show_bug.cgi؟id=862395

ال 26 كومينتر

باستخدام التصحيح من # 1193 هذه قطعة من الكعكة ، والجزء القابل للنقر هو عمل إضافي قليل.

ملاحظة:icon من # 1096 يمكن أن تستخدم لرمز من الإخطار.

سيكون من الجيد أن يكون لديك خارج DOM غير المميز أحيانًا ... لكن إجماعًا على نوع الإشعار الذي قد يمثل مشكلة.

عبارة "إرسال الإخطارات" غامضة للغاية.

بافتراض أنك تنوي أن يعني هذا "توفير واجهة لخدمة nsIAlertsService " ، يجب أن أفكر

أعتقد أن رد فعلي سيكون أن هذا يجب أن يكون require الذي يضعه في DOM للصفحة _that_ ، وإلا كيف يُفترض أن يعرف المستخدم الصفحة التي تأتي منها الرسالة (خاصةً عندما يكون هناك العديد من علامات التبويب المناسبة المفتوحة) ؟

بافتراض أنك تقصد أن يعني هذا "توفير واجهة لـ nsIAlertsService"

نعم ، هذا سيستخدم ما قمت بتطبيقه في # 1193

لقد اختفى الخبز المحمص تقريبًا قبل أن يتاح لي الوقت لإيقاف ما أفعله ، وقراءة الصندوق ، ومعرفة ما يقوله.

حسنًا ، أنا أحبهم ، وأعتقد أنه من الأفضل لمؤلف البرنامج النصي للمستخدم أن يقرر ما إذا كان مفيدًا للنص أم لا. إلى جانب ذلك ، أعتقد أن المدة التي تظهر فيها هي إعداد قابل للتخصيص ، على الأقل مع OSX وأنا أعلم أنه كذلك.

أعتقد أن رد فعلي سيكون أن هذا يجب أن يكون require الذي يضعه في DOM لتلك الصفحة ،

كيف يمكن أن يتم ذلك..؟

كيف يُفترض أن يعرف المستخدم الصفحة التي تأتي منها الرسالة (خاصةً عندما تكون هناك عدة علامات تبويب مناسبة مفتوحة)؟

يمكن أن يكون العنوان هو اسم البرنامج النصي للمستخدم ، ويمكن أن يكون الرمز هوicon.

يبدو أنها مختصرة للغاية ويصعب التفاعل معها. في كل مرة تقريبًا (على سبيل المثال) يخبرني Firefox أو Thunderbird أن هناك تحديثًا أو رسالة جديدة ، فقد اختفى الخبز المحمص تقريبًا قبل أن يتاح لي الوقت لإيقاف ما أفعله ، وقراءة الصندوق ، ومعرفة ما يقوله.

alerts.totalOpenTime هو الإعداد الذي تريد تغييره ، القيمة الافتراضية هي 4 ثوانٍ ، وعادةً ما أحب 30 ثانية.

هل ستكون على استعداد لإضافة دعم مخصص للصور؟

وظيفة GM_notification (aMsg ، aTitle ، aImg) {
 var title = aTitle؟ "" + aTitle: "Greasemonkey" ؛
 var message = aMsg؟ "" + aMsg: "" ؛
 var image = aImg؟ "" + aImg: "chrome: //greasemonkey/skin/icon_medium.png"؛
 يحاول {
 تنبيهاتServ.showAlertNotification (
 صورة،
 العنوان ، الرسالة ، خطأ ، "" ، فارغ) ؛
 // هذا يبدو أفضل على ubuntu من windows (http://i55.tinypic.com/2jfwtg9.png)
 } catch (e) {
 // في حالة عدم تثبيت Growl على جهاز Mac.
 تنبيه (عنوان + "\ n" + رسالة) ؛
 }
 } ؛

خدع # 1271

wontfix التصويت على هذا

wontfix التصويت لهذا

لماذا ا؟

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

ستكون هذه الميزة مفيدة للنصوص التي تعيد توجيه DOM عدة مرات وتهبط في النهاية على صورة بدلاً من htm / l ولا تزال تسمح بإشعارات للمستخدم النهائي بحدوث تفاصيل معينة. كما نعلم جميعًا ، فإن user.js يعمل فقط على ملفات .htm / l وليس الصور.

التصويت على +1 لفضح وظيفة API إلى sandbox لأنه من السهل جدًا القيام به مع مزايا إضافية.

تحرير: لمعالجة الطلب من GM-Script-Writer-62850 ، يمكن بسهولة استخدام القيمة @icon جنبًا إلى جنب مع هذا.

يحتوي Firefox 22 على دعم إشعارات الويب: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/22

+1

يحتوي Firefox 22 على دعم إشعارات الويب: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/22

لكنني أعتقد أنه يحتوي على خطأ فادح (https://bugzilla.mozilla.org/show_bug.cgi؟id=875114 ، على التوالي https://bugzilla.mozilla.org/show_bug.cgi؟id=862395). ثم يمكنني إغلاق: https://github.com/greasemonkey/greasemonkey/issues/1742

في بعض حالات الاستخدام ، قد نتمكن من استخدام إشعارات الويب بدلاً من ذلك ، والتي يمكن إضافتها إلى Firefox باستخدام العديد من الوظائف الإضافية مثل برنامج تنبيه علامة التبويب .

في بعض حالات الاستخدام ، قد نتمكن من استخدام إشعارات الويب بدلاً من ذلك ، والتي يمكن إضافتها إلى Firefox باستخدام العديد من الوظائف الإضافية مثل برنامج تنبيه علامة التبويب.

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

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

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

فرع الاختبار:
https://github.com/janekptacijarabaci/greasemonkey/tree/_testBranch_GM_notification

مزامنة API مع Tampermonkey
راجع أيضًا https://tampermonkey.net/documentation.php#GM_notification

هذا مجرد شيء للاختبار!

يستخدم الوظيفة " PopupNotifications " (! = "Web (HTML5) Notification API")!
(لست بحاجة إلى هذه الميزة - في الوقت الحالي سأنتظر لحل هذه المشكلة: علة 862395 )

janekptacijarabaci شكراً لكني وجدت أنه عربات التي تجرها الدواب ...

  1. PopupNotifications.jsm ليس إشعار سطح المكتب: لن يظهر الإخطار إذا تم تصغير نافذة المتصفح. (نعم ، هذا مهم جدًا وإلا فإنه يصبح عديم الفائدة أكثر بكثير)
  2. يجب أن تكون onclick و ondone اختيارية ، لكنها ستفشل حاليًا بدون هذه القيم

(لست متأكدًا من موعد إصلاح الخلل 862395. لكنني أعتقد أنه من الأفضل أن يكون لديك خطأ ولكن يمكن استخدامه من لا شيء.)

تم تحديث فرع الاختبار:
إخطارات منبثقة => إعلام سطح المكتب

تضمين التغريدة
شكرا لك.

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

لست متأكدًا مما تعتقد أنه يجب أن تكون واجهة برمجة التطبيقات هذه. لكن آمل أن يعمل هذا مع تحكم مختلف في الأذونات لنصوص المحتوى من موقع الويب. (وهذا هو ما تفعله الآن TM. فهي تسمح دائمًا للمستخدمين بإظهار التنبيهات)

تضمين التغريدة

السؤال هو كيف نفعل ذلك ...

يختلف إشعار سطح المكتب في Chrome (Tampermonkey):
https://developer.chrome.com/extensions/desktop_notifications

يجب منح إذن أساسي للنظام (بامتياز الكروم). ولكن...
استخدام تمرير الرسائل (خاصةً تحت e10s on) - يقتل جميع الأحداث (onclick ، ​​ondone).
يمكن استخدام هذه الوظيفة على النحو التالي:
https://github.com/greasemonkey/greasemonkey/blob/3.9/modules/sandbox.js#L75
(https://github.com/greasemonkey/greasemonkey/blob/3.9/modules/menucommand.js#L90)
لكنني أترك الأمر للمجتمع / arantius (لست متأكدًا من الطريقة الأفضل للقيام بذلك).
(لا أعرف ما إذا كان شخص ما يريد القيام بذلك: # 2275 - http://arewewebextensionsyet.com/#notifications)

ليس لدي فكرة أفضل الآن ...

ومع ذلك فقد بذلت بعض المحاولات ...

تم تحريره:
لكن ... لا يعمل تشغيل GM_notification () مرتين (وأكثر) على التوالي بالنسبة لي.

انظر أيضًا الخطأ 1263155 ( 1294332 ، 1306822 ) ...

لمعلوماتك...
تم حلها ثابتة
https://bugzilla.mozilla.org/show_bug.cgi؟id=862395

إذن .. هل نفذت أم لا؟

VBelozyorov ، لا أعتقد أنه تم تنفيذه لـ 3.x. ولكن لـ 4.x # 2590

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