Greasemonkey: Добавить GM_notification API

Созданный на 20 сент. 2010  ·  26Комментарии  ·  Источник: greasemonkey/greasemonkey

Как автор пользовательского скрипта, я хотел бы иметь возможность отправлять моим пользователям интерактивные уведомления вместо предупреждений в окнах подтверждения во многих ситуациях.

Самый полезный комментарий

К вашему сведению ...
РАЗРЕШЕНО ФИКСИРОВАННОЕ
https://bugzilla.mozilla.org/show_bug.cgi?id=862395

Все 26 Комментарий

Используя патч от # 1193, это совсем несложно, кликабельная часть - это немного лишняя работа.

примечание: @icon из # 1096 можно использовать для значка уведомления.

Было бы неплохо иметь его за пределами непривилегированной модели DOM ... но консенсус в отношении того, какое уведомление может быть проблемой.

Фраза «отправлять уведомления» крайне расплывчата.

Предполагая, что вы имеете в виду, что это означает «предоставить интерфейс для nsIAlertsService », мне придется

Я думаю, что моя инстинктивная реакция будет заключаться в том, что это должен быть @require, который помещает его в DOM _этой_ страницы, иначе как пользователь должен знать, с какой страницы приходит сообщение (особенно когда может быть открыто несколько подходящих вкладок) ?

Предполагая, что вы имеете в виду «предоставить интерфейс для nsIAlertsService»

Да, это будет использовать то, что я реализовал в # 1193

тост исчез почти прежде, чем я успел остановиться, прочитать коробку и понять, что в ней написано.

Что ж, я люблю их, и я думаю, что автору пользовательского сценария лучше решить, полезно оно для его сценария или нет. Кроме того, я думаю, что продолжительность их появления - это настраиваемая настройка, по крайней мере, я знаю, что это так с osx.

Я думаю, что моя инстинктивная реакция была бы такой, что это должен быть @require, который помещает его в DOM этой страницы,

как бы это было сделать ..?

как пользователь должен узнать, с какой страницы пришло сообщение (особенно когда может быть открыто несколько подходящих вкладок)?

заголовком может быть имя пользовательского скрипта, а значком - @icon.

Они кажутся очень краткими и трудными для взаимодействия. Почти каждый раз (например) Firefox или Thunderbird сообщает мне об обновлении или новом сообщении, тост исчезает почти до того, как я успеваю остановить то, что я делаю, прочитать окно и выяснить, что в нем написано.

alert.totalOpenTime - это параметр, который вы хотите изменить, значение по умолчанию - 4 секунды, мне обычно нравится 30 секунд.

Вы бы хотели добавить поддержку пользовательских изображений?

function GM_notification (aMsg, aTitle, aImg) {
 var title = aTitle? "" + aTitle: "Greasemonkey";
 var message = aMsg? "" + aMsg: "";
 var image = aImg? "" + aImg: "chrome: //greasemonkey/skin/icon_medium.png";
 пытаться {
 alertsServ.showAlertNotification (
 изображение,
 title, message, false, "", null);
 // Это выглядит лучше на ubuntu, чем на windows (http://i55.tinypic.com/2jfwtg9.png)
 } catch (e) {
 // В случае, например, если Growl не установлен на Mac.
 предупреждение (заголовок + "\ n" + сообщение);
 }
 };

Обманывал # 1271

голосование не исправит это

голосование 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 с помощью различных надстроек, таких как средство уведомления о вкладках.

Но с помощью API веб-уведомлений скрипт может выдавать всплывающие уведомления только в том случае, если пользователь разрешает это делать сайту. У пользователя нет выбора, чтобы отключить уведомления с веб-сайта, но включить их из скрипта.

Да, я полностью упустил этот аспект. : +1:
Обходным решением может быть использование секретного пароля и настройка средства уведомления вкладки для отображения только тех уведомлений, которые его включают. В зависимости от вредоносности сайта одного странного символа Юникода может быть достаточно, а может быть даже и невидимого.

Опять же, этот API необходим, поскольку веб-сайт начинает показывать уведомления, которые пользователи хотят их заблокировать. Но мне тоже нужно показывать уведомления. В результате у пользователя нет выбора между отключением всех этих уведомлений или их включением. Мне нужен этот API, чтобы пользователь мог разрешать уведомления только из пользовательского скрипта.

Ветвь тестирования:
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 будет исправлена. Но я думаю, что лучше иметь исправную, но работоспособную, чем ничего.)

Обновлена ​​тестовая ветка:
Всплывающие уведомления => Уведомления на рабочем столе

@janekptacijarabaci
Спасибо.

Насколько я понимаю, в настоящее время реализация в тестовой ветке разрешает уведомление только тогда, когда пользователь дает разрешение на это сайту. Это похоже Notification прямой вызов

Я не уверен, что вы считаете этим api. Но я надеюсь, что этот может работать с другим контролем разрешений для скриптов контента с веб-сайта. (И это сейчас TM. Они всегда позволяют отображать уведомления с помощью пользовательского скрипта)

@tiansh

Вопрос в том, как это сделать ...

Уведомление на рабочем столе в 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)
но я оставляю это сообществу / арантиусу (я не уверен, как это сделать лучше всего).
(Не знаю, захочет ли кто-нибудь это сделать: # 2275 - http://arewewebextensionsyet.com/#notifications)

У меня сейчас нет лучшего представления ...

Однако я предпринял некоторые попытки ...

Отредактировано:
Но ... Запускать GM_notification () дважды (и более) подряд у меня не работает.

См. Также ошибку 1263155 ( 1294332 , 1306822 ) ...

К вашему сведению ...
РАЗРЕШЕНО ФИКСИРОВАННОЕ
https://bugzilla.mozilla.org/show_bug.cgi?id=862395

Итак ... Реализовано или нет?

@VBelozyorov , не думаю, что это было реализовано для 3.х. Но для 4.x # 2590

Была ли эта страница полезной?
0 / 5 - 0 рейтинги