web-dev-qa-db-ja.com

内部から外部アプリケーションでアドレスを開くChromeブラウザ

enter image description here

ChromeブラウザがNPAPIベースの拡張機能(FirefoxのOpenwithやFlashgotと同様に、この目的のためのアドオンを含む)を放棄した後、ブラウザから外部アプリケーションにリンクを送信する方法があります(他のブラウザ、ビデオプレーヤー、カスタムダウンローダーなどのように)?

このNPAPIアドオン は次のように呼び出されます:「外部アプリケーションで開く」。

起こった変化を考えると、それに代わるものはありますか?

2
user162573

専用の拡張機能を介する場合を除いて、Chrome外部アプリケーションを直接呼び出すことはできませんが、NPAPIを使用しないアプリケーションは見つかりませんでした。

オペレーティングシステムで設定する必要がある、機能する必要のあるメソッドがまだ1つあります。それは、カスタムURIスキームとも呼ばれるカスタムプロトコルです。

URIスキームは、URLの先頭にある部分です。一般的なものには、http(s)://ftp://feed://mailto:news:があります。既知のすべてのリストは、 niform Resource Identifier(URI)Schemes のIANAリストにあります。

これらのプロトコルが行うことは、パラメータを処理するアプリケーションを起動することだけです。アプリケーションが正常に起動すると、コマンドラインパラメータを使用して、アプリケーションを起動したURIを取得できます。通常の方法は、引数を処理して必要なプログラムを起動する既知のスクリプトを呼び出すことです。

ここにWindows、Linux、Macのチュートリアルを含めるのは非常に重いですが、ここにいくつかの役立つリファレンスがあります。


ポスターによる要求に答えるために、以下はプロトコル/path/progのハンドラーとしてxyz://を設定するLinuxKDEスクリプトです。 KDE用にファイル$KDEDIR/share/services/xyz.protocolを作成し、データを入力します。一部のアプリケーションはKDEで実行されている場合でもGnomeを使用するため、Gnome設定も(可能な場合は)設定されます。スクリプトが適応されます 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."
3
harrymc

残念ながら、Chromeは、特定のURLまたはプロトコルを入力するときに起動するプログラムを制御しません。これは、選択したプログラムに新しいプロトコルを追加して関連付ける機能がない限り、Windowsによって決定されます。 。

たとえば、uTorrentをインストールしてデフォルト設定のままにした場合、次のリンクをクリックすると自動的に開きます: magnet:?xt = urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a&dn 。実際、Firefoxでは、好みのプログラムを選択するように求められますが、Chromeは同じことをしません。

0
Sanny