Làm cách nào để thiết lập trình xử lý giao thức tùy chỉnh trong chrome? Cái gì đó như:
myprotocol: // testfile
Tôi cần điều này để gửi yêu cầu tới http://example.com?query=testfile , sau đó gửi httpresponse đến tiện ích mở rộng của tôi.
Làm cách nào để thiết lập trình xử lý giao thức tùy chỉnh trong chrome? Cái gì đó như:
myprotocol: // testfile
Tôi cần điều này để gửi yêu cầu tới http://example.com?query=testfile , sau đó gửi httpresponse đến tiện ích mở rộng của tôi.
Câu trả lời:
Phương thức sau đăng ký một ứng dụng vào một lược đồ URI. Vì vậy, bạn có thể sử dụng mycustproto: trong mã HTML của mình để kích hoạt một ứng dụng cục bộ. Nó hoạt động trên Phiên bản Google Chrome 51.0.2704.79 m (64-bit).
Tôi chủ yếu sử dụng phương pháp này để in tài liệu một cách im lặng mà không có hộp thoại in bật lên. Kết quả là khá tốt và là một giải pháp liền mạch để tích hợp ứng dụng bên ngoài với trình duyệt.
Mã HTML (đơn giản):
<a href="mycustproto:Hello World">Click Me</a>
Mã HTML (thay thế):
<input id="DealerName" />
<button id="PrintBtn"></button>
$('#PrintBtn').on('click', function(event){
event.preventDefault();
window.location.href = 'mycustproto:dealer ' + $('#DealerName').val();
});
Lược đồ URI sẽ giống như sau:
Bạn có thể tạo Lược đồ URI theo cách thủ công trong sổ đăng ký hoặc chạy tệp "mycustproto.reg" (xem bên dưới).
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"
Ví dụ 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\""
Ứng dụng bảng điều khiển 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();
}
}
}
Hãy thử chạy chương trình trước để đảm bảo rằng chương trình đã được đặt vào đúng đường dẫn:
cmd> "C:\Program Files\MyProgram\myprogram.exe" "mycustproto:Hello World"
Nhấp vào liên kết trên trang HTML của bạn:
Lần đầu tiên bạn sẽ thấy một cửa sổ cảnh báo bật lên.
Để đặt lại cài đặt trình xử lý giao thức bên ngoài trong Chrome:
Nếu bạn đã từng chấp nhận giao thức tùy chỉnh trong Chrome và muốn đặt lại cài đặt, hãy thực hiện việc này (hiện tại, không có giao diện người dùng trong Chrome để thay đổi cài đặt):
Chỉnh sửa " Trạng thái cục bộ " tệp này theo đường dẫn này:
C:\Users\Username\AppData\Local\Google\Chrome\User Data\
hoặc Chỉ cần truy cập:
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\
Sau đó, tìm kiếm chuỗi này: protocol_handler
Bạn sẽ thấy giao thức tùy chỉnh từ đó.
Lưu ý: Vui lòng đóng Google Chrome của bạn trước khi chỉnh sửa tệp. Nếu không, thay đổi bạn đã thực hiện sẽ bị Chrome ghi đè.
Tài liệu tham khảo:
https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx
Preferences
tập tin, tọa lạc tại%localappdata%\Google\Chrome\User Data\Default
Chrome 13 hiện hỗ trợ navigator.registerProtocolHandler
API. Ví dụ,
navigator.registerProtocolHandler(
'web+custom', 'http://example.com/rph?q=%s', 'My App');
Lưu ý rằng tên giao thức của bạn phải bắt đầu bằng web+
, với một vài ngoại lệ đối với những cái thông thường (như mailto
, v.v.). Để biết thêm chi tiết, hãy xem: http://updates.html5rocks.com/2011/06/Registering-a-custom-protocol-handler
torrent:
và steam:
các liên kết hoạt động sau đó? Ứng dụng đóng gói của Chrome có hạn chế này không?
chrome.webNavigation
API, tel:
các liên kết không bao giờ được báo cáo.
Câu hỏi này giờ đã cũ, nhưng đã có một bản cập nhật gần đây cho Chrome (ít nhất là những ứng dụng đóng gói có liên quan) ...
http://developer.chrome.com/apps/manifest/url_handlers
và
https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/url-handler
Nó cho phép bạn đăng ký một trình xử lý cho một URL (miễn là bạn sở hữu nó). Đáng buồn là không myprotocol://
nhưng ít nhất bạn có thể làm http://myprotocol.mysite.com
và có thể tạo một trang web ở đó hướng mọi người đến ứng dụng trong cửa hàng ứng dụng.
Đây là cách tôi đã làm điều đó. Ứng dụng của bạn sẽ cần cài đặt một vài khóa reg khi cài đặt, sau đó trong bất kỳ trình duyệt nào, bạn chỉ cần liên kết tới foo: \ anythingHere.txt và nó sẽ mở ứng dụng của bạn và chuyển cho nó giá trị đó.
Đây không phải là mã của tôi, chỉ là thứ tôi tìm thấy trên web khi tìm kiếm cùng một câu hỏi. Chỉ cần thay đổi tất cả "foo" trong văn bản bên dưới thành tên giao thức bạn muốn và thay đổi cả đường dẫn đến exe của bạn.
(đặt cái này vào tệp văn bản dưới dạng lưu dưới dạng foo.reg trên màn hình của bạn, sau đó nhấp đúp vào nó để cài đặt các phím) ----- Dưới dòng này là tệp .reg (KHÔNG bao gồm dòng này) --- ---
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\""
Không chắc liệu đây có phải là nơi thích hợp cho câu trả lời của tôi hay không, nhưng vì tôi tìm thấy rất ít chủ đề hữu ích và đây là một trong số đó, tôi đăng giải pháp của mình ở đây.
Sự cố : Tôi muốn Linux Mint 19.2 Cinnamon mở Evolution khi nhấp vào mailto
các liên kết trong Chromium. Gmail đã được đăng ký làm trình xử lý mặc định trong chrome: // settings / handlers và tôi không thể chọn bất kỳ trình xử lý nào khác.
Giải pháp : Sử dụng xdg-settings trong bảng điều khiển
xdg-settings set default-url-scheme-handler mailto org.gnome.Evolution.desktop
Giải pháp được tìm thấy tại đây https://alt.os.linux.ubuntu.narkive.com/U3Gy7inF/kubuntu-mailto-links-in-chrome-doesn-t-open-evolution và được điều chỉnh cho trường hợp của tôi.
mở
C:\Users\<Username>\AppData\Local\Google\Chrome\User Data\Default
mở Preferences
rồi tìm kiếm excluded_schemes
bạn sẽ thấy nó trong 'protocol_handler', xóa (các) lược đồ bị loại trừ này để đặt lại chrome để mở url với ứng dụng mặc định