Открыть адрес во внешнем приложении из браузера Chrome

4168
cipricus

Открыть адрес во внешнем приложении из браузера Chrome

После того, как браузер Chrome отказался от расширений на основе NPAPI (которые включали для этой цели дополнения, аналогичные Openwith и Flashgot из Firefox), появился способ отправки ссылки из браузера на внешнее приложение (например, другой браузер, видеоплеер, пользовательский интерфейс). загрузчик и т. д.)?

Этот аддон NPAPI называется так: «Открыть с помощью внешнего приложения».

Есть ли альтернатива этому, учитывая произошедшие изменения?

1
[Запустите мое установленное приложение из браузера Chrome] (http://stackoverflow.com/q/23516816/4098390), а также: [Запустите внешнее приложение из расширения Google Chrome?] (http://stackoverflow.com/q/ 2652094/4098390) cipricus 7 лет назад 0

2 ответа на вопрос

2
harrymc

Больше нельзя напрямую вызывать в Chrome внешнее приложение, кроме как через выделенное расширение, но я не смог найти то, которое не использует NPAPI.

Есть еще один метод, который должен работать, который должен быть установлен в операционной системе: пользовательские протоколы, называемые также пользовательскими схемами URI.

Схема URI - это часть, которую можно найти в начале URL-адреса. Некоторые распространенные из них являются: http(s)://, ftp://, feed://, mailto:, news:. Список всех известных можно найти в списке схем универсального идентификатора ресурса (URI) IANA .

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

Включение здесь учебника для Windows, Linux и Mac слишком тяжело, но вот несколько полезных ссылок:


Чтобы ответить на запрос автора, ниже приведен сценарий Linux KDE, который устанавливает /path/progобработчик для протокола xyz://. Он создает для KDE файл $KDEDIR/share/services/xyz.protocolи заполняет его. Настройки Gnome также устанавливаются (если это возможно), так как некоторые приложения все еще используют их, даже если работают в KDE. Скрипт адаптирован из github .

#!/usr/bin/env bash # # This script attempts to register a protocol handler for # links that look like sgaction://blah.  # # It should be sufficient for gnome apps like pidgin and kde apps # like konqueror. Firefox seems to pay attention to the gnome # settings at least to the degree that it recognizes links of the # form $protocol://blah as hot-links, but it may still ask you to # select the application the first time you click on one.  protocol=xyz handler="/path/prog"  echo "Installing $protocol protocol handler for Gnome."  gconfTool="$(which gconftool-2)" if [[ "$gconfTool" ]]; then gconftool-2 --set --type=string /desktop/gnome/url-handlers/$protocol/command "$handler \"%s\"" gconftool-2 --set --type=bool /desktop/gnome/url-handlers/$protocol/enabled true gconftool-2 --set --type=bool /desktop/gnome/url-handlers/$protocol/need-terminal false else echo "WARNING: gconftool-2 not found: skipping gnome url-handler registration." fi   echo "Installing $protocol protocol handler for KDE."  kdeProtoDir=~/.kde/share/services  if [[ "$KDEDIR" ]]; then kdeProtoDir="$KDEDIR/share/services" fi  if [[ ! -e "$kdeProtoDir" ]]; then mkdir -p "$kdeProtoDir" fi  if [[ -e "$kdeProtoDir" ]]; then kdeProtoFile="$kdeProtoDir/$protocol.protocol" rm -f $kdeProtoFile cat > $kdeProtoFile << EOF [Protocol] exec=$handler "%u" protocol=$protocol input=none output=none helper=true listing=false reading=false writing=false makedir=false deleting=false EOF else echo "WARNING: can't find or create KDE protocol directory: $kdeProtoDir: skipping KDE url-handler registration." fi   echo "Done." 
До публикации новых расширений указанные решения зависят от конкретной ОС и требуют уровня компетенции, который мне недоступен. Я использую в основном Linux. Думаю, мне придется подождать, пока не будут опубликованы расширения, не относящиеся к npapi (я не понимаю, почему это занимает так много времени, спрос должен быть огромным), cipricus 7 лет назад 0
Я могу перечислить необходимые шаги для Linux. В какой версии Linux вы используете KDE или Gnome (и какая версия Gnome)? harrymc 7 лет назад 0
That would be great! I am using multiple Linux-es but my main one is KDE (Mint 18 with Plasma 5). cipricus 7 лет назад 0
Я добавил bash-скрипт, который может сделать эту работу. Я не могу проверить, поэтому я делаю это по теории. harrymc 7 лет назад 0
Сейчас я даю награду. Но я не буду давать однозначного ответа. Я искал готовое расширение или, возможно, пользовательский скрипт в Tempermonkey, который позволил бы то, что я спрашиваю. Я понятия не имею, как использовать ваш сценарий, мне нужно гораздо больше деталей. (Сохранены были? Запущены как? Как это доступно в Chrome?) cipricus 7 лет назад 0
Этот одноразовый скрипт запускается с помощью sudo после установки параметров `protocol` и` handler`. Это позволит вам запустить некоторую вашу программу / скрипт со ссылкой в ​​качестве параметра. Вы должны изучить ссылки, которые я дал, чтобы найти, как использовать пользовательские URI. Пользовательский скрипт, безусловно, возможен, если у вас есть определенное представление о том, что следует изменить. Идите медленно и Google для более подробной информации, как вы продвигаетесь. harrymc 7 лет назад 0
0
Sanny

К сожалению, Chrome не контролирует, какую программу запускать при вводе определенных URL или протоколов. Это решается Windows, если выбранная вами программа не имеет возможности добавлять новый протокол и связываться с ним.

Например, если вы установили utorrent и оставили его настройки по умолчанию, он откроется сам при нажатии на эту ссылку: magnet:? Xt = urn: btih: c12fe1c06bba254a9dc9f519b335aa7c1367a88a & dn . На самом деле в Firefox вам будет предложено выбрать нужные программы, но Chrome не будет делать то же самое.

I don't think normally browsers have that feature but with an addon it should be possible. There were such addons that are not working anymore. cipricus 7 лет назад 0
example: https://chrome.google.com/webstore/detail/open-with-external-applic/hccmhjmmfdfncbfpogafcbpaebclgjcp cipricus 7 лет назад 0

Похожие вопросы