Пользовательские скрипты и расширение Chrome
Я разрабатываю расширение, которое будет читать значение HTML-элементов, а затем вызывает вызовы API на внешний веб-сайт, получать результаты и отображать их во вновь созданных элементах HTML.
Каковы преимущества/недостатки написания его в родных расширениях chrome и userscripts?
Ответы
Ответ 1
Существует несколько различий между встроенным расширением Chrome и пользователем script.
См. этот раздел вики для списка различий между сценариями Greasemonkey и скриптами Chrome.
Если вы хотите использовать межсерверные пользовательские скрипты, попробуйте не использовать методы GM_*
или unsafeWindow
.
С точки зрения разработчика нет преимуществ, предпочитающих либо пользовательские скрипты, либо расширения Chrome, поскольку любой пользователь script может быть легко встроен в расширение Chrome.
Если вы рассматриваете этот раздел в свете развертывания, то различия существенны:
- Установка одним щелчком доступна только в Интернет-магазине Chrome. Только внутренние расширения.
- Оба пользовательских сценария и собственные расширения можно перетащить из локального файлового браузера на страницу "Расширения", чтобы установить расширение.
(Пользовательские скрипты преобразуются в расширения Chrome, предупреждение: см. Ниже).
- Поддержка родного пользователя script перестанет работать в конце 2013 года, потому что конвертированные пользовательские скрипты используют манифест версии 1, который устарел.
Заключение
Я рекомендую разрабатывать собственные расширения. Вы можете легко создать расширение Chrome от пользователя script, используя следующую структуру каталогов:
manifest.json
whatever.user.js
Минимальный манифест. json:
{
"name": "name of extension",
"version": "1",
"manifest_version": 2,
"content_scripts": [{
"js": ["whatever.user.js"],
"matches": ["http://example.com/*"]
}]
}
См. также
Ответ 2
Случай для написания (и совместного использования!) пользовательских скриптов: пока вы просто используете обычные API DOM браузера, ваш script может с минимальными усилиями быть поднятым и выполненным для запуска (часто просто устанавливая его без изменений) на любой, кто использует другой пользовательский браузер script.
Случай с ними, когда вы используете Google Chrome, заключается в том, что с Chrome 21 их установка была смехотворной: вам нужно щелкнуть правой кнопкой мыши по ссылке установки, сохранить ее на диск, открыть страницу расширений и перетащить сохраненную script там (да) или установите TamperMonkey из Интернет-магазина Chrome (это бесплатно, и для Chrome это действительно то, что Greasemonkey для Firefox: предоставляет пользователю script установку и обслуживание переносимого пользовательского интерфейса).
Пока вам нужно только делать то, что вы перечисляете, вам может не понадобиться более привилегированный доступ к API, чем то, что пользовательский сценарий дает вам изначально: попробуйте выполнить код XMLHttpRequest, который вы пишете для script в консоли devtools, когда на другом сайте, и вы увидите, достаточно ли это для ваших нужд или нет. Многие веб-интерфейсы API в наши дни поддерживают поддержку CORS, что может сэкономить ваш прецедент от необходимости прибегать к собственным API-интерфейсам API-интерфейсов собственных браузеров.
Ответ 3
Пользовательские скрипты (то есть сценарии Greasemonkey), установленные непосредственно с Chrome, в конечном итоге автоматически преобразуются в расширения с помощью скриптов контента, поэтому они по сути одинаковы.
Пользовательские скрипты быстро и легко записываются, и хороший пользователь script может поддерживаться в других браузерах. Тем не менее, существует несколько ограничений для пользовательских скриптов в Chrome. Они не могут напрямую читать или писать переменные с веб-страниц (используется только стандартный DOM). Они не могут создавать XHR с поперечным происхождением.
Напротив, расширения намного мощнее, но сложнее развиваться.
Кажется, вам придется писать расширения Chrome, поскольку вам нужно "делать вызовы API на внешний веб-сайт".