[google-chrome-extension] 크롬의 커스텀 프로토콜 핸들러

크롬에서 커스텀 프로토콜 핸들러를 어떻게 설정하나요? 다음과 같은 것 :

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


답변

Chrome 13은 이제 navigator.registerProtocolHandlerAPI를 지원합니다 . 예를 들면

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를 참조하십시오.


답변

이 질문은 이제 오래되었지만 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\""


답변

이것이 내 답변에 적합한 장소인지 확실하지 않지만 유용한 스레드가 거의없고 그중 하나 였으므로 여기에 솔루션을 게시하고 있습니다.

문제 : mailtoChromium 에서 링크를 클릭 할 때 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로 크롬을 재설정이 제외 기법을 삭제


답변