Greasemonkey: Tambahkan GM_notification API

Dibuat pada 20 Sep 2010  ·  26Komentar  ·  Sumber: greasemonkey/greasemonkey

Sebagai penulis skrip pengguna, saya akan senang untuk dapat mengirim pemberitahuan yang dapat diklik kepada pengguna saya alih-alih waspada pada jendela konfirmasi dalam banyak situasi.

Komentar yang paling membantu

Semua 26 komentar

menggunakan tambalan dari #1193 ini adalah sepotong kue, bagian yang dapat diklik adalah sedikit kerja ekstra.

catatan: @icon dari #1096 dapat digunakan untuk ikon notifikasi.

Akan menyenangkan untuk memilikinya di luar DOM yang tidak memiliki hak kadang-kadang ... tetapi konsensus tentang jenis pemberitahuan apa yang mungkin menjadi masalah.

Ungkapan "kirim pemberitahuan" sangat tidak jelas.

Dengan asumsi bahwa Anda bermaksud ini berarti "menyediakan antarmuka ke nsIAlertsService " Saya harus berpikir beberapa saat sebelum saya dapat membentuk pendapat yang jelas. Secara umum, saya sangat tidak menyukai pemberitahuan roti panggang yang (saya asumsikan) berikan. Mereka tampak sangat singkat dan sulit untuk berinteraksi. Hampir setiap kali (misalnya) Firefox atau Thunderbird memberi tahu saya bahwa ada pembaruan atau pesan baru, roti panggang telah hilang hampir sebelum saya sempat menghentikan apa yang saya lakukan, membaca kotaknya, dan mencari tahu apa yang tertulis di dalamnya.

Saya pikir reaksi saya adalah bahwa ini harus menjadi @require yang menempatkannya di DOM halaman _that_, jika tidak, bagaimana pengguna dapat mengetahui dari halaman mana pesan itu berasal (terutama ketika mungkin ada beberapa tab yang sesuai terbuka) ?

Dengan asumsi bahwa Anda bermaksud ini berarti "menyediakan antarmuka ke nsIAlertsService"

Ya ini akan menggunakan apa yang saya terapkan di #1193

roti panggang telah menghilang hampir sebelum saya sempat menghentikan apa yang sedang saya lakukan, membaca kotaknya, dan mencari tahu apa yang tertulis di dalamnya.

Yah saya suka mereka, dan saya pikir lebih baik bagi penulis skrip pengguna untuk memutuskan apakah itu berguna untuk skrip mereka atau tidak. Selain itu saya pikir berapa lama mereka muncul adalah pengaturan yang dapat disesuaikan, setidaknya dengan osx saya tahu itu.

Saya pikir reaksi saya adalah bahwa ini harus menjadi @require yang menempatkannya di DOM halaman itu,

bagaimana itu dilakukan..?

bagaimana pengguna bisa mengetahui dari halaman mana pesan itu berasal (terutama ketika mungkin ada beberapa tab yang sesuai terbuka)?

judulnya bisa berupa nama skrip pengguna, dan ikonnya bisa berupa @icon.

Mereka tampak sangat singkat dan sulit untuk berinteraksi. Hampir setiap kali (misalnya) Firefox atau Thunderbird memberi tahu saya bahwa ada pembaruan atau pesan baru, roti panggang telah hilang hampir sebelum saya sempat menghentikan apa yang saya lakukan, membaca kotaknya, dan mencari tahu apa yang tertulis di dalamnya.

alerts.totalOpenTime adalah pengaturan yang ingin Anda ubah, nilai defaultnya adalah 4secs, saya biasanya suka 30secs.

Apakah Anda bersedia menambahkan dukungan gambar khusus?

fungsi GM_notification(aMsg, aTitle, aImg) {
 var judul = aTitle ? "" + aTitle : "Greasemonkey";
 var pesan = aMsg ? "" + pesan: "";
 var gambar = aImg ? "" + aImg : "chrome://greasemonkey/skin/icon_medium.png";
 mencoba {
 alertsServ.showAlertNotification(
 gambar,
 judul, pesan, salah, "", null);
 // Ini terlihat lebih baik di ubuntu daripada windows ( http://i55.tinypic.com/2jfwtg9.png )
 } tangkap (e) {
 // Jika misalnya Growl tidak diinstal pada Mac.
 alert(judul + "\n" + pesan);
 }
 };

Ditipu oleh #1271

pemungutan suara tidak akan memperbaiki ini

pemungutan suara tidak akan diperbaiki untuk ini

Mengapa?

arantius menulis :
Intinya adalah bahwa fitur yang diganti tergantung pada bilah status, yang akan hilang di Firefox 4. Saat ini, tidak lebih dari itu.

Fitur ini akan berguna untuk skrip yang mengalihkan DOM beberapa kali dan akhirnya mendarat di gambar alih-alih htm/l dan masih memungkinkan pemberitahuan kepada pengguna akhir bahwa detail tertentu telah terjadi. Seperti yang kita semua tahu user.js hanya bekerja pada file .htm/l bukan gambar.

Memilih +1 untuk mengekspos fungsi API ke sandbox karena sangat mudah dilakukan dengan manfaat tambahan.

EDIT: Untuk mengatasi permintaan dari GM-Script-Writer-62850 nilai pada @icon dapat dengan mudah digunakan bersama dengan ini.

Firefox 22 memiliki dukungan pemberitahuan web: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/22

+1

Firefox 22 memiliki dukungan pemberitahuan web: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/22

Tapi saya pikir itu memiliki kesalahan besar (https://bugzilla.mozilla.org/show_bug.cgi?id=875114, masing-masing https://bugzilla.mozilla.org/show_bug.cgi?id=862395). Kemudian saya dapat menutup: https://github.com/greasemonkey/greasemonkey/issues/1742

Dalam beberapa kasus penggunaan, kami mungkin dapat menggunakan pemberitahuan web sebagai gantinya, yang dapat ditambahkan ke Firefox menggunakan berbagai add-on seperti tab notifier .

Dalam beberapa kasus penggunaan, kami mungkin dapat menggunakan notifikasi web sebagai gantinya, yang dapat ditambahkan ke Firefox menggunakan berbagai add-on seperti pemberi notifikasi tab.

Tetapi dengan menggunakan api notifikasi web, skrip hanya dapat memunculkan notifikasi jika pengguna mengizinkan situs untuk melakukannya. Pengguna tidak memiliki pilihan untuk menonaktifkan notifikasi dari situs web tetapi mengaktifkannya dari skrip.

Benar, saya sangat merindukan aspek itu. :+1:
Solusinya adalah menggunakan kata sandi rahasia dan mengonfigurasi pemberitahuan tab untuk hanya menampilkan pemberitahuan yang menyertakannya. Bergantung pada kejahatan situs, satu karakter unicode yang aneh mungkin cukup, bahkan bisa menjadi karakter yang tidak terlihat.

Sekali lagi, API ini diperlukan karena situs web mulai menampilkan notifikasi pengguna mana yang ingin memblokirnya. Tapi saya perlu menunjukkan notifikasi juga. Akibatnya, pengguna tidak memiliki pilihan antara menonaktifkan semua notifikasi ini atau mengaktifkan semuanya. Saya membutuhkan API ini sehingga pengguna hanya dapat mengizinkan pemberitahuan dari skrip pengguna.

Cabang pengujian:
https://github.com/janekptacijarabaci/greasemonkey/tree/_testBranch_GM_notification

Sinkronkan API dengan Tampermonkey
Lihat juga https://tampermonkey.net/documentation.php#GM_notification

Ini hanya untuk pengujian!

Menggunakan fungsi " PopupNotifications " (!= "Web (HTML5) Notification API")!
(Saya tidak memerlukan fitur ini - untuk saat ini saya akan menunggu untuk menyelesaikan masalah ini: bug 862395 )

@janekptacijarabaci Terima kasih, tapi saya menemukan itu buggy...

  1. PopupNotifications.jsm bukan Desktop Notification: Notifikasi tidak akan ditampilkan jika jendela browser diminimalkan. (Ya, ini sangat penting jika tidak maka akan jauh lebih tidak berguna)
  2. onclick dan ondone harus opsional, tetapi saat ini akan gagal tanpa nilai-nilai ini

(Saya tidak yakin kapan bug 862395 akan diperbaiki. Tapi saya pikir lebih baik memiliki buggy tapi bisa digunakan daripada tidak sama sekali.)

Cabang uji diperbarui:
Pemberitahuan Popup => Pemberitahuan Desktop

@janekptacijarabaci
Terima kasih.

Sepengetahuan saya, saat ini implementasi di cabang uji hanya mengizinkan pemberitahuan ketika pengguna memberikan izin ke situs untuk melakukannya. Ini seperti memanggil Notification secara langsung. Pengguna masih tidak memiliki pilihan untuk menonaktifkan pemberitahuan dari situs tetapi mengizinkannya ke skrip pengguna.

Saya tidak yakin apa yang Anda anggap sebagai api ini. Tapi saya harap yang ini dapat bekerja dengan kontrol izin yang berbeda untuk skrip konten dari situs web. (Dan itulah yang dilakukan TM saat ini. Mereka selalu mengizinkan pemberitahuan acara skrip pengguna)

@tiansh

Pertanyaannya adalah bagaimana melakukannya ...

Notifikasi Desktop di Chrome (Tampermonkey) berbeda:
https://developer.chrome.com/extensions/desktop_notifications

Prinsip sistem (khusus chrome) harus diberikan izin. Tetapi...
Menggunakan pengiriman pesan (terutama di bawah e10s aktif) - mematikan semua acara (onclick, ondone).
Fungsi ini dapat digunakan sebagai berikut:
https://github.com/greasemonkey/greasemonkey/blob/3.9/modules/sandbox.js#L75
(https://github.com/greasemonkey/greasemonkey/blob/3.9/modules/menucommand.js#L90)
tapi saya serahkan kepada komunitas/arantius (saya tidak yakin bagaimana cara terbaik untuk melakukannya).
(Saya tidak tahu apakah seseorang ingin melakukan ini: #2275 - http://arewewebextensionsyet.com/#notifications)

Saya tidak punya ide yang lebih baik sekarang ...

Namun saya telah melakukan beberapa upaya ...

Diedit:
Tapi... Jalankan GM_notification() dua kali (dan lebih banyak lagi) berturut-turut tidak bekerja untuk saya.

Lihat juga bug 1263155 ( 1294332 , 1306822 )...

Jadi... Diimplementasikan atau tidak?

@VBelozyorov , saya tidak berpikir itu diterapkan untuk 3.x. Tapi untuk 4.x #2590

Apakah halaman ini membantu?
0 / 5 - 0 peringkat