如何在Chrome中设置自定义协议处理程序?就像是:
myprotocol:// testfile
我将需要此请求将请求发送到http://example.com?query=testfile,然后将httpresponse发送给我的扩展程序。
如何在Chrome中设置自定义协议处理程序?就像是:
myprotocol:// testfile
我将需要此请求将请求发送到http://example.com?query=testfile,然后将httpresponse发送给我的扩展程序。
Answers:
以下方法将应用程序注册到URI方案。因此,您可以在HTML代码中使用mycustproto:来触发本地应用程序。它适用于Google Chrome版本51.0.2704.79 m(64位)。
我主要使用这种方法以静默方式打印文档,而不会弹出打印对话框。结果非常好,并且是将外部应用程序与浏览器集成的无缝解决方案。
HTML代码(简单):
<a href="mycustproto:Hello World">Click Me</a>
HTML代码(替代):
<input id="DealerName" />
<button id="PrintBtn"></button>
$('#PrintBtn').on('click', function(event){
event.preventDefault();
window.location.href = 'mycustproto:dealer ' + $('#DealerName').val();
});
URI方案将如下所示:
您可以在注册表中手动创建URI方案,或运行“ mycustproto.reg”文件(请参见下文)。
HKEY_CURRENT_USER\Software\Classes
mycustproto
(Default) = "URL:MyCustProto Protocol"
URL Protocol = ""
DefaultIcon
(Default) = "myprogram.exe,1"
shell
open
command
(Default) = "C:\Program Files\MyProgram\myprogram.exe" "%1"
mycustproto.reg示例:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\mycustproto]
"URL Protocol"="\"\""
@="\"URL:MyCustProto Protocol\""
[HKEY_CURRENT_USER\Software\Classes\mycustproto\DefaultIcon]
@="\"mycustproto.exe,1\""
[HKEY_CURRENT_USER\Software\Classes\mycustproto\shell]
[HKEY_CURRENT_USER\Software\Classes\mycustproto\shell\open]
[HKEY_CURRENT_USER\Software\Classes\mycustproto\shell\open\command]
@="\"C:\\Program Files\\MyProgram\\myprogram.exe\" \"%1\""
C#控制台应用程序-myprogram.exe:
using System;
using System.Collections.Generic;
using System.Text;
namespace myprogram
{
class Program
{
static string ProcessInput(string s)
{
// TODO Verify and validate the input
// string as appropriate for your application.
return s;
}
static void Main(string[] args)
{
Console.WriteLine("Raw command-line: \n\t" + Environment.CommandLine);
Console.WriteLine("\n\nArguments:\n");
foreach (string s in args)
{
Console.WriteLine("\t" + ProcessInput(s));
}
Console.WriteLine("\nPress any key to continue...");
Console.ReadKey();
}
}
}
尝试首先运行该程序,以确保将程序放置在正确的路径中:
cmd> "C:\Program Files\MyProgram\myprogram.exe" "mycustproto:Hello World"
单击HTML页面上的链接:
您将第一次看到警告窗口弹出。
要在Chrome中重置外部协议处理程序设置,请执行以下操作:
如果您曾经在Chrome中接受过自定义协议,并且想重置设置,请执行以下操作(当前,Chrome中没有UI可以更改设置):
在此路径下编辑“本地状态”此文件:
C:\Users\Username\AppData\Local\Google\Chrome\User Data\
或只需转到:
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\
然后,搜索以下字符串:protocol_handler
您将在此处看到自定义协议。
注意:在编辑文件之前,请关闭您的Google Chrome浏览器。否则,您所做的更改将被Chrome覆盖。
参考:
https://msdn.microsoft.com/zh-CN/library/aa767914(v=vs.85).aspx
Preferences
,位于%localappdata%\Google\Chrome\User Data\Default
Chrome 13现在支持该navigator.registerProtocolHandler
API。例如,
navigator.registerProtocolHandler(
'web+custom', 'http://example.com/rph?q=%s', 'My App');
请注意,您的协议名称必须以开头web+
,除了一些常见的例外(例如mailto
,等等)。有关更多详细信息,请参阅:http : //updates.html5rocks.com/2011/06/Registering-a-custom-protocol-handler
torrent:
和steam:
再环节的工作?Chrome打包应用程序也有此限制吗?
chrome.webNavigation
API,tel:
也永远不会报告链接。
这个问题现在已经很老了,但是Chrome最近更新了(至少在打包应用程序方面)...
http://developer.chrome.com/apps/manifest/url_handlers
和
https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/url-handler
它允许您注册URL的处理程序(只要您拥有它)。遗憾的是,没有,myprotocol://
但是至少您可以做,http://myprotocol.mysite.com
并且可以在那里创建一个网页,将人们指向应用商店中的应用。
这就是我的方法。您的应用程序需要在安装时安装一些注册表项,然后在任何浏览器中,您都可以链接到foo:\ anythingHere.txt,它将打开您的应用程序并将其传递给该值。
这不是我的代码,只是我在搜索同一问题时在网上找到的内容。只需将下面文本中的所有“ foo”更改为所需的协议名称,并更改exe的路径即可。
(将其保存为文本文件,另存为桌面上的foo.reg,然后双击以安装密钥)-----在此行下方进入.reg文件(不包括此行)- ---
REGEDIT4
[HKEY_CLASSES_ROOT\foo]
@="URL:foo Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\foo\shell]
[HKEY_CLASSES_ROOT\foo\shell\open]
[HKEY_CLASSES_ROOT\foo\shell\open\command]
@="\"C:\\Program Files (x86)\\Notepad++\\notepad++.exe\" \"%1\""
不确定这是否是我的答案的正确位置,但是由于我发现很少有用的线程,而这是其中之一,因此我将解决方案发布在这里。
问题:单击mailto
Chromium中的链接时,我希望Linux Mint 19.2 Cinnamon打开Evolution 。Gmail已在chrome:// settings / handlers中注册为默认处理程序,但我无法选择其他任何处理程序。
解决方案:在控制台中使用xdg-settings
xdg-settings set default-url-scheme-handler mailto org.gnome.Evolution.desktop
在这里找到解决方案https://alt.os.linux.ubuntu.narkive.com/U3Gy7inF/kubuntu-mailto-links-in-chrome-doesn-t-open-evolution,并且适合我的情况。
打开
C:\Users\<Username>\AppData\Local\Google\Chrome\User Data\Default
打开Preferences
然后搜索,excluded_schemes
您将在'protocol_handler'中找到它。删除此排除的方案,以重置chrome以使用默认应用程序打开url