在Chrome浏览器放弃了基于NPAPI的扩展(包括用于此目的的插件,类似于来自Firefox的Openwith和Flashgot)后,有一种方法可以将浏览器的链接发送到外部应用程序(如其他浏览器,视频播放器,自定义)下载器等)?
这个NPAPI插件 就像那样调用:“使用外部应用程序打开”。
鉴于发生的变化,是否有替代方案?
在Chrome浏览器放弃了基于NPAPI的扩展(包括用于此目的的插件,类似于来自Firefox的Openwith和Flashgot)后,有一种方法可以将浏览器的链接发送到外部应用程序(如其他浏览器,视频播放器,自定义)下载器等)?
这个NPAPI插件 就像那样调用:“使用外部应用程序打开”。
鉴于发生的变化,是否有替代方案?
Answers:
除了via之外,不能再在Chrome上直接调用外部应用程序了 一个专门的扩展,但我找不到一个不使用NPAPI。
还有一种方法应该可行,需要在其中设置 操作系统:自定义协议,也称为自定义URI方案。
URI方案是在URL开头找到的部分。
一些常见的是: http(s)://
, ftp://
, feed://
, mailto:
, news:
。
所有已知的列表都可以在IANA列表中找到 统一资源标识符(URI)方案 。
这些协议所做的就是启动一个处理参数的应用程序。 应用程序成功启动后,它可以使用命令行参数来检索启动它的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."
不幸的是,Chrome在输入某些特定的URL或协议时无法控制要启动的程序。这取决于Windows,除非您选择的程序能够添加新协议并将其自身关联。
例如,如果您安装了utorrent并保留其默认设置,则单击此链接时它将自行打开: ?磁体:XT =瓮:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a&安培; DN 。事实上,在Firefox上,您将立即选择您喜欢的程序,但Chrome不会这样做。