6 google-chrome file-association chromium application-launch google-chrome-extensions
Chrome 浏览器放弃基于 NPAPI 的扩展(其中包括用于此目的的插件,类似于 Firefox 中的 Openwith 和 Flashgot)后,是否有一种方法可以将链接从浏览器发送到外部应用程序(如其他浏览器、视频播放器、自定义应用程序)下载器等)?
这个 NPAPI 插件的调用方式如下:“用外部应用程序打开”。
鉴于所发生的变化,是否有替代方案?
除非通过专用扩展程序,否则人们无法直接在 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)
不幸的是,Chrome 无法控制在输入某些 URL 或协议时启动哪些程序。这是由 Windows 决定的,除非您选择的程序能够添加新协议并将其自身与其关联。
例如,如果您安装了 utorrent 并保留其默认设置,则当您单击此链接时,它将自行打开:magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a&dn。事实上,在 Firefox 上,您会被提示选择您喜欢的程序,但 Chrome 不会这样做。
| 归档时间: |
|
| 查看次数: |
18635 次 |
| 最近记录: |