从 Chrome 浏览器内部打开外部应用程序中的地址

6 google-chrome file-association chromium application-launch google-chrome-extensions

在此输入图像描述

Chrome 浏览器放弃基于 NPAPI 的扩展(其中包括用于此目的的插件,类似于 Firefox 中的 Openwith 和 Flashgot)后,是否有一种方法可以将链接从浏览器发送到外部应用程序(如其他浏览器、视频播放器、自定义应用程序)下载器等)?

这个 NPAPI 插件的调用方式如下:“用外部应用程序打开”。

鉴于所发生的变化,是否有替代方案?

har*_*ymc 5

除非通过专用扩展程序,否则人们无法直接在 Chrome 上调用外部应用程序,但我找不到不使用 NPAPI 的应用程序。

还有一种方法应该可行,需要在操作系统中设置:自定义协议,也称为自定义 URI 方案。

URI 方案是位于 URL 开头的部分。一些常见的有:http(s)://、、、、。所有已知方案的列表可以在 IANA统一资源标识符 (URI) 方案列表中找到 。ftp://feed://mailto:news:

这些协议所做的只是启动一个处理参数的应用程序。应用程序成功启动后,它可以使用命令行参数来检索启动它的 URI。通常的方法是调用一个已知的脚本来处理其参数并启动所需的程序。

这里包含适用于 Windows、Linux 和 Mac 的教程实在是太繁重了,但这里有一些有用的参考:


为了回答发帖者的请求,下面是一个设置 /path/prog为协议处理程序的 Linux KDE 脚本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."
Run Code Online (Sandbox Code Playgroud)


San*_*nny 0

不幸的是,Chrome 无法控制在输入某些 URL 或协议时启动哪些程序。这是由 Windows 决定的,除非您选择的程序能够添加新协议并将其自身与其关联。

例如,如果您安装了 utorrent 并保留其默认设置,则当您单击此链接时,它将自行打开:magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a&dn。事实上,在 Firefox 上,您会被提示选择您喜欢的程序,但 Chrome 不会这样做。