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


1

enter image description here

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

这个NPAPI插件 就像那样调用:“使用外部应用程序打开”。

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


Answers:


1

除了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."

在发布新扩展之前,所示的解决方案是特定于操作系统的,并且需要一定程度的能力,这是我无法企及的。我主要使用Linux。我想我将不得不等到非npapi扩展发布(我徘徊为什么需要这么长时间,需求必须很大),

我可以列出Linux所需的步骤。哪个Linux版本,您使用的是KDE或Gnome(以及哪个Gnome版本)?
harrymc

那太好了!我使用的是多个Linux-es,但我的主要是KDE(Mint 18 with Plasma 5)。

我添加了一个可以完成这项工作的bash脚本。我无法测试,所以我是靠理论来做的。
harrymc

我现在正在给予赏金。但我不会给出明确的答案。我正在寻找一个现成的扩展或可能是Tempermonkey中的用户脚本,这将允许我的要求。我不知道如何使用你的脚本,我需要更多细节。 (已保存?推出了怎么样?Chrome中如何访问?)

0

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

例如,如果您安装了utorrent并保留其默认设置,则单击此链接时它将自行打开: ?磁体:XT =瓮:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a&安培; DN 。事实上,在Firefox上,您将立即选择您喜欢的程序,但Chrome不会这样做。


我不认为通常浏览器有这个功能,但有一个插件应该是可能的。有这样的插件不再工作了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.