1

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

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

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

2 ответа2

2

Больше нельзя напрямую вызывать в 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."
0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .