ฉันจะตั้งค่าตัวจัดการโปรโตคอลที่กำหนดเองใน Chrome ได้อย่างไร สิ่งที่ต้องการ:
myprotocol: // testfile
ฉันต้องการสิ่งนี้เพื่อส่งคำขอไปที่http://example.com?query=testfileจากนั้นส่ง httpresponse ไปยังส่วนขยายของฉัน
ฉันจะตั้งค่าตัวจัดการโปรโตคอลที่กำหนดเองใน Chrome ได้อย่างไร สิ่งที่ต้องการ:
myprotocol: // testfile
ฉันต้องการสิ่งนี้เพื่อส่งคำขอไปที่http://example.com?query=testfileจากนั้นส่ง httpresponse ไปยังส่วนขยายของฉัน
คำตอบ:
วิธีการต่อไปนี้จะลงทะเบียนแอปพลิเคชันกับ URI Scheme ดังนั้นคุณสามารถใช้mycustproto:ในโค้ด HTML ของคุณเพื่อทริกเกอร์แอปพลิเคชันภายในเครื่อง ทำงานบน Google Chrome เวอร์ชัน 51.0.2704.79 ม. (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 Scheme จะมีลักษณะดังนี้:
คุณสามารถสร้าง URI Scheme ด้วยตนเองในรีจิสทรีหรือเรียกใช้ไฟล์ "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 ของคุณก่อนแก้ไขไฟล์ มิฉะนั้นการเปลี่ยนแปลงที่คุณทำไว้จะถูกเขียนทับโดย 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 Packaged Apps มีข้อ จำกัด นี้ด้วยหรือไม่
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\""
ไม่แน่ใจว่านี่เป็นสถานที่ที่เหมาะสมสำหรับคำตอบของฉันหรือไม่ แต่เนื่องจากฉันพบกระทู้ที่เป็นประโยชน์น้อยมากและนี่เป็นหนึ่งในนั้นฉันจึงโพสต์วิธีแก้ปัญหาที่นี่
ปัญหา : ฉันต้องการให้ Linux Mint 19.2 Cinnamon เปิด Evolution เมื่อคลิกที่mailto
ลิงค์ใน Chromium 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 ด้วยแอปพลิเคชันเริ่มต้น