크롬에서 커스텀 프로토콜 핸들러를 어떻게 설정하나요? 다음과 같은 것 :
myprotocol : // testfile
http://example.com?query=testfile에 요청을 보낸 다음 내 확장에 httpresponse를 보내려면 이것이 필요합니다.
크롬에서 커스텀 프로토콜 핸들러를 어떻게 설정하나요? 다음과 같은 것 :
myprotocol : // testfile
http://example.com?query=testfile에 요청을 보낸 다음 내 확장에 httpresponse를 보내려면 이것이 필요합니다.
답변:
다음 메서드는 응용 프로그램을 URI Scheme에 등록합니다. 따라서 HTML 코드에서 mycustproto : 를 사용 하여 로컬 애플리케이션을 트리거 할 수 있습니다 . Google Chrome 버전 51.0.2704.79m (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가 없습니다).
이 경로에서 " Local State "이 파일을 편집하십시오 .
C:\Users\Username\AppData\Local\Google\Chrome\User Data\
또는 다음으로 이동하십시오.
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\
그런 다음 다음 문자열을 검색하십시오. protocol_handler
거기에서 사용자 지정 프로토콜을 볼 수 있습니다.
참고 : 파일을 편집하기 전에 Google 크롬을 닫으십시오. 그렇지 않으면 Chrome이 변경 한 내용을 덮어 씁니다.
참고:
https://msdn.microsoft.com/en-us/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
수 있고 앱 스토어의 앱으로 사람들을 안내하는 웹 페이지를 만들 수 있습니다.
이것이 내가 한 방법입니다. 앱은 설치시 몇 개의 reg 키를 설치해야합니다. 그런 다음 모든 브라우저에서 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'에서 그것을 발견 할 것이다 기본 응용 프로그램으로 열기 URL로 크롬을 재설정이 제외 기법을 삭제