Jak skonfigurować niestandardową obsługę protokołu w przeglądarce Chrome? Coś jak:
myprotocol: // plik testowy
Potrzebowałbym tego, aby wysłać żądanie do http://example.com?query=testfile , a następnie wysłać httpresponse do mojego rozszerzenia.
Jak skonfigurować niestandardową obsługę protokołu w przeglądarce Chrome? Coś jak:
myprotocol: // plik testowy
Potrzebowałbym tego, aby wysłać żądanie do http://example.com?query=testfile , a następnie wysłać httpresponse do mojego rozszerzenia.
Odpowiedzi:
Poniższa metoda rejestruje aplikację w schemacie URI. Możesz więc użyć mycustproto: w swoim kodzie HTML, aby uruchomić lokalną aplikację. Działa na przeglądarce Google Chrome w wersji 51.0.2704.79 m (64-bit).
Używałem tej metody głównie do cichego drukowania dokumentu bez wyskakującego okna dialogowego drukowania. Wynik jest całkiem niezły i jest bezproblemowym rozwiązaniem do integracji zewnętrznej aplikacji z przeglądarką.
Kod HTML (prosty):
<a href="mycustproto:Hello World">Click Me</a>
Kod HTML (alternatywny):
<input id="DealerName" />
<button id="PrintBtn"></button>
$('#PrintBtn').on('click', function(event){
event.preventDefault();
window.location.href = 'mycustproto:dealer ' + $('#DealerName').val();
});
Schemat URI będzie wyglądał następująco:
Schemat URI można utworzyć ręcznie w rejestrze lub uruchomić plik „mycustproto.reg” (patrz poniżej).
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"
Przykład 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\""
Aplikacja konsoli 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();
}
}
}
Spróbuj najpierw uruchomić program, aby upewnić się, że program został umieszczony we właściwej ścieżce:
cmd> "C:\Program Files\MyProgram\myprogram.exe" "mycustproto:Hello World"
Kliknij łącze na swojej stronie HTML:
Po raz pierwszy zobaczysz okienko z ostrzeżeniem.
Aby zresetować ustawienie obsługi protokołu zewnętrznego w Chrome:
Jeśli kiedykolwiek zaakceptowałeś niestandardowy protokół w Chrome i chciałbyś zresetować ustawienie, zrób to (obecnie w Chrome nie ma interfejsu użytkownika, który mógłby zmienić ustawienie):
Edytuj „ Stan lokalny ” ten plik pod tą ścieżką:
C:\Users\Username\AppData\Local\Google\Chrome\User Data\
lub po prostu przejdź do:
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\
Następnie wyszukaj ten ciąg: protocol_handler
Tam zobaczysz niestandardowy protokół.
Uwaga: przed edycją pliku zamknij przeglądarkę Google Chrome. W przeciwnym razie wprowadzona zmiana zostanie nadpisana przez Chrome.
Odniesienie:
https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx
Preferences
pliku, który znajduje się%localappdata%\Google\Chrome\User Data\Default
Chrome 13 obsługuje teraz navigator.registerProtocolHandler
interfejs API. Na przykład,
navigator.registerProtocolHandler(
'web+custom', 'http://example.com/rph?q=%s', 'My App');
Zwróć uwagę, że nazwa twojego protokołu musi zaczynać się od web+
, z kilkoma wyjątkami dla popularnych protokołów (np. mailto
Itp.). Aby uzyskać więcej informacji, zobacz: http://updates.html5rocks.com/2011/06/Registering-a-custom-protocol-handler
torrent:
i steam:
linki działają? Czy aplikacje w pakiecie Chrome również mają to ograniczenie?
chrome.webNavigation
interfejsu API tel:
linki nigdy nie są zgłaszane.
To pytanie jest teraz stare, ale niedawno pojawiła się aktualizacja Chrome (przynajmniej jeśli chodzi o aplikacje w pakietach) ...
http://developer.chrome.com/apps/manifest/url_handlers
i
https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/url-handler
Pozwala zarejestrować procedurę obsługi dla adresu URL (o ile jesteś jej właścicielem). Niestety nie, myprotocol://
ale przynajmniej możesz to zrobić http://myprotocol.mysite.com
i utworzyć tam stronę internetową, która kieruje ludzi do aplikacji w sklepie z aplikacjami.
Tak to zrobiłem. Twoja aplikacja będzie musiała zainstalować kilka kluczy reg podczas instalacji, a następnie w dowolnej przeglądarce możesz po prostu połączyć się z foo: \ cokolwiekHere.txt, a otworzy ona aplikację i przekaże jej tę wartość.
To nie jest mój kod, tylko coś, co znalazłem w sieci podczas wyszukiwania tego samego pytania. Po prostu zmień wszystkie „foo” w poniższym tekście na żądaną nazwę protokołu i zmień również ścieżkę do swojego exe.
(umieść to w pliku tekstowym jako foo.reg na pulpicie, a następnie kliknij dwukrotnie, aby zainstalować klucze) ----- Poniżej tej linii przechodzi do pliku .reg (NIE wliczając tej linii) --- ---
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\""
Nie jestem pewien, czy to jest właściwe miejsce na moją odpowiedź, ale ponieważ znalazłem bardzo mało pomocnych wątków i to był jeden z nich, zamieszczam tutaj swoje rozwiązanie.
Problem : Chciałem, aby Linux Mint 19.2 Cinnamon otwierał Evolution po kliknięciu mailto
linków w Chromium. Gmail został zarejestrowany jako domyślny program obsługi w chrome: // settings / handlers i nie mogłem wybrać żadnego innego modułu obsługi.
Rozwiązanie : użyj ustawień xdg w konsoli
xdg-settings set default-url-scheme-handler mailto org.gnome.Evolution.desktop
Rozwiązanie zostało znalezione tutaj https://alt.os.linux.ubuntu.narkive.com/U3Gy7inF/kubuntu-mailto-links-in-chrome-doesn-t-open-evolution i dostosowane do mojego przypadku.
otwarty
C:\Users\<Username>\AppData\Local\Google\Chrome\User Data\Default
otwórz, Preferences
a następnie wyszukaj excluded_schemes
, znajdziesz go w 'protocol_handler' usuń ten wykluczony schemat (y), aby zresetować chrome do otwierania adresu URL z domyślną aplikacją