ক্রোমে কাস্টম প্রোটোকল হ্যান্ডলার


89

আমি ক্রোমে কীভাবে একটি কাস্টম প্রোটোকল হ্যান্ডলার সেট আপ করব? কিছুটা এইরকম:

মাইপ্রোটোকল: // টেস্টফিল

Http://example.com?query=estfile- এ একটি অনুরোধ প্রেরণ করার জন্য আমার এটির প্রয়োজন হবে, তারপরে আমার প্রসারণে HTTP://sponsese পাঠান।


ক্রোম বর্তমানে এটি সমর্থন করে না বলে আমি মনে করি না, এটিতে এক্সটেনশনের জন্য এপিআইয়ের পরিবর্তে সীমিত সেট রয়েছে।
ও্লাদিমির প্যালান্ট

উত্তর:


78

নিম্নলিখিত পদ্ধতিটি ইউআরআই স্কিমের জন্য একটি আবেদন নিবন্ধভুক্ত করে। সুতরাং, আপনি স্থানীয় অ্যাপ্লিকেশন ট্রিগার করতে আপনার এইচটিএমএল কোডে মাইকাস্টপ্রোটো ব্যবহার করতে পারেন । এটি একটি গুগল ক্রোম সংস্করণ 51.0.2704.79 মি (64-বিট) এ কাজ করে।

আমি মুদ্রণ ডায়ালগ পপ আপ না করে নীরবে নথি মুদ্রণের জন্য এই পদ্ধতিটি ব্যবহার করেছি used ফলাফলটি বেশ ভাল এবং ব্রাউজারের সাথে বাহ্যিক অ্যাপ্লিকেশনকে সংহত করার জন্য একটি বিরামবিহীন সমাধান।

এইচটিএমএল কোড (সহজ):

<a href="mycustproto:Hello World">Click Me</a>

এইচটিএমএল কোড (বিকল্প):

<input id="DealerName" />
<button id="PrintBtn"></button>

$('#PrintBtn').on('click', function(event){
  event.preventDefault();
  window.location.href = 'mycustproto:dealer ' + $('#DealerName').val();
});

ইউআরআই স্কিম এর মতো দেখাবে:

আপনি রেজিস্ট্রিতে ম্যানুয়ালি ইউআরআই স্কিম তৈরি করতে পারেন, বা "মাইকাস্টপ্রোটো.গ্রিগ" ফাইলটি চালাতে পারেন (নীচে দেখুন)।

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\""

সি # কনসোল অ্যাপ্লিকেশন - 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"

আপনার এইচটিএমএল পৃষ্ঠায় লিঙ্কটি ক্লিক করুন:

আপনি প্রথমবারের জন্য একটি সতর্কতা উইন্ডো পপআপ দেখতে পাবেন।

এখানে চিত্র বর্ণনা লিখুন

Chrome এ বাহ্যিক প্রোটোকল হ্যান্ডলার সেটিংটি পুনরায় সেট করতে:

আপনি যদি কখনও ক্রোমে কাস্টম প্রোটোকল গ্রহণ করে থাকেন এবং সেটিংটি পুনরায় সেট করতে চান তবে এটি করুন (বর্তমানে, সেটিংস পরিবর্তন করার জন্য ক্রোমে কোনও ইউআই নেই):

এই পথের অধীনে এই ফাইলটিকে " স্থানীয় রাষ্ট্র " সম্পাদনা করুন :

C:\Users\Username\AppData\Local\Google\Chrome\User Data\

বা সহজভাবে যান:

%USERPROFILE%\AppData\Local\Google\Chrome\User Data\

তারপরে, এই স্ট্রিংটির জন্য অনুসন্ধান করুন: প্রোটোকল_হ্যান্ডলার

আপনি সেখান থেকে কাস্টম প্রোটোকল দেখতে পাবেন।

দ্রষ্টব্য: ফাইলটি সম্পাদনার আগে দয়া করে আপনার গুগল ক্রোমটি বন্ধ করুন। অন্যথায়, আপনি যে পরিবর্তনটি করেছেন তা ক্রোম দ্বারা ওভাররাইট করা হবে।

তথ্যসূত্র:

https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx


এটি আশাব্যঞ্জক দেখাচ্ছে, আমি কি কোনও ট্যাবলেট থেকে মুদ্রণের জন্য এই পদ্ধতিটি ব্যবহার করতে পারি? যদি তাই হয় তবে কীভাবে রেজিস্ট্রি ইত্যাদির ক্ষেত্রে কীভাবে মোকাবেলা করতে হবে
ভেঙ্কট

4
@ ভেনক্যাট আমি মনে করি ট্যাবলেটের নাম এবং অপারেটিং সিস্টেমটি প্রথমে নির্দিষ্টকরণ (উদাহরণ: পৃষ্ঠতলের, আইপ্যাড, ইত্যাদি) এবং আরও অন্যরা এর আগে এটি করেছে কিনা দেখুন better আমি পোস্ট করা সমাধানটি উইন্ডোজের জন্য। আমি ওএস এক্স এবং লিনাক্সের জন্য একই ধরণের সেটিংস দেখেছি। যাইহোক, আমি এই ডিভাইস / পরিবেশের জন্য পরীক্ষার কাজে লাগেনি। এটি কীভাবে কাজ করে তার প্রাথমিক ধারণা পেতে আপনি প্রথমে উইন্ডোজে এটি চেষ্টা করতে পারেন। আমি আশা করি এটি সাহায্য করবে
জুন হিশিহ

4
রেকর্ডের জন্য, আমি ফাইলটিতে প্রোটোকল_হ্যান্ডলার কনফিগারেশন বিকল্পটি প্রতিষ্ঠিত করেছিPreferences%localappdata%\Google\Chrome\User Data\Default
বাবলো

ক্রোমের অভ্যন্তরে একক জাভাস্ক্রিপ্ট কলটিতে একের পর এক বহু প্রোটোকল চালাতে অক্ষম।
প্রিমিয়াম

আমার কী কী রেজিস্ট্রিতে পাওয়া যায় না? ব্রাউজার থেকে আমি কীটির ভিত্তিতে অ্যাপ্লিকেশনটি কল করতে বলছি? এখানে, কীভাবে রেজিস্ট্রিতে কীটি পাওয়া যায়নি তা আমি ব্যবহারকারীকে জানাতে পারি?
আখিল নায়ের

55

ক্রোম 13 এখন navigator.registerProtocolHandlerএপিআই সমর্থন করে । উদাহরণ স্বরূপ,

navigator.registerProtocolHandler(
    'web+custom', 'http://example.com/rph?q=%s', 'My App');

নোট করুন যে আপনার প্রোটোকল নামটি web+সাধারণগুলির (যেমন mailto, ইত্যাদির জন্য) ব্যতিক্রম কিছু দিয়ে শুরু করতে হবে । আরও বিশদের জন্য দেখুন: http://updates.html5rocks.com/2011/06/ রেজিস্টারিং- একটি- কাস্টম- প্রোটোকল- হ্যান্ডলার



4
কিভাবে torrent:এবং steam:সংযোগগুলি তারপর কাজ করে? Chrome প্যাকেজড অ্যাপ্লিকেশনগুলিরও কি এই বিধিনিষেধ আছে?
স্টিভেন রুজ

4
@ স্টিভেন রুজ আমি যা বলতে পারি সেগুলি থেকে ক্রোম সেগুলিকে ওএস এ দেয়। এমনকি chrome.webNavigationএপিআই ব্যবহার করে , tel:লিঙ্কগুলি কখনও রিপোর্ট করা হয় না।
পিক্সনবিটস

এটি কোনও ক্রোম অ্যাপের অভ্যন্তরে কাজ করবে বলে মনে হচ্ছে না এবং এটি অ্যাপের অভ্যন্তরে প্রোটোকল পুনর্নির্দেশ করতে সক্ষম হবে বলে মনে হচ্ছে না। আরও ভাল উত্তর নীচে গর্ডন উইলিয়ামস উত্তর।
কারেল বালেক


30

এই প্রশ্নটি এখন পুরানো, তবে ক্রোমের সাম্প্রতিক আপডেট হয়েছে (অন্তত যেখানে প্যাকেজড অ্যাপ্লিকেশনগুলি সম্পর্কিত) ...

http://developer.chrome.com/apps/manifest/url_handlers

এবং

https://github.com/GoogleChrome/chrome-app-sams/tree/master/sample/url-handler

এটি আপনাকে কোনও ইউআরএল হ্যান্ডলারের নিবন্ধকরণ করতে দেয় (যতক্ষণ না আপনি নিজের মালিক)। দুঃখজনকভাবে না myprotocol://তবে কমপক্ষে আপনি এটি করতে পারেন http://myprotocol.mysite.comএবং সেখানে একটি ওয়েবপৃষ্ঠা তৈরি করতে পারেন যা অ্যাপ স্টোরের অ্যাপগুলিতে লোককে নির্দেশ করে।


এই উত্তরের জন্য অনেক ধন্যবাদ! শীর্ষে ভোট দেওয়া উত্তরের মতো নয়, এটি আসলে প্রশ্নের উত্তর দেয়!
কারেল বালেক 22'15

10

এইভাবে আমি এটি করেছি। আপনার অ্যাপ্লিকেশনটির ইনস্টলেশনের জন্য কয়েকটি রেগ কীগুলি ইনস্টল করা দরকার, তারপরে যে কোনও ব্রাউজারে আপনি কেবল foo: \ nothingHere.txt এ লিঙ্ক করতে পারেন এবং এটি আপনার অ্যাপ্লিকেশনটি খুলবে এবং এটিকে মানটি দিয়ে যাবে।

এটি আমার কোড নয়, একই প্রশ্নটি অনুসন্ধান করার সময় ওয়েবে আমি খুঁজে পেয়েছি। নীচের পাঠ্যটিতে থাকা সমস্ত "ফু" আপনার প্রোটোকল নামটিতে পরিবর্তন করুন এবং পাশাপাশি আপনার এক্সে পথের পরিবর্তন করুন।

(এটি আপনার ডেস্কটপে 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\"" 

4
এটি ক্রোমে কাজ করে না, যা নির্দিষ্ট প্রশ্ন ছিল।
কেজেটিল ওয়াটনেডাল

4
@ কেজেটিওয়্যাটনেডাল: এটি ক্রোমে (কমপক্ষে v40 + এ) এবং এই সমাধানটি দিয়ে দুর্দান্ত কাজ করে। প্রাথমিক প্রশ্নের সাথে সম্পর্কিত, ওপি চেয়েছিল ব্রাউজারটি কোনও স্থানীয় হ্যান্ডলারের অ্যাপ্লিকেশন ছাড়াই স্বয়ংক্রিয়ভাবে কোনও সাইটে কিছু জমা দিতে পারে যা সম্ভবত সম্ভব নাও হতে পারে।
মার্সেল এন।

7
আমি প্রত্যেককে তার সমাধান ক্রোমে কাজ করার বিষয়ে জানতে দিতে চাই (আজ 49.0.2623.87 এ পরীক্ষিত)। যাইহোক, আমি খুঁজে পেয়েছি যে আপনি যদি সরাসরি ব্রাউজারে এই প্রোটোকলটি টাইপ করেন (foo: // C: /test.txt) আপনি সিটিআরএল + এন্টার ব্যবহার করতে পারেন কারণ ব্রাউজারটি সঙ্গে সঙ্গে প্রোটোকল এবং অনুসন্ধান প্রোটোকল ইন্টারসেপ্টগুলি স্বীকৃতি দেয় না অপারেটিং সিস্টেমের আগে ওএস করতে পারে। যদিও এটি একটি লিঙ্কে রাখা সঠিকভাবে কাজ করেছে।
টিমি

@ মাইমি - আপনাকে অনেক ধন্যবাদ! আমি ক্রোমে কাজ করার জন্য প্রোটোকল হ্যান্ডলারগুলি পাওয়ার চেষ্টা করে আমার চুল ছিঁড়ে ফেলেছি - আমার যা করতে হবে তা সরিয়ে দেয় Ctrl + enter ব্যবহার করা! আবার ধন্যবাদ!
গলি

@ মিমি আপনাকে অনেক ধন্যবাদ, আমি ইতিমধ্যে ভেবেছিলাম আমার ব্যবহারকারীদের ইন্টারনেট এক্সপ্লোরারটির সাথে লেগে থাকতে হবে
পাইপ

2

এটি আমার উত্তরের জন্য সঠিক জায়গা কিনা তা নিশ্চিত নন, তবে যেহেতু আমি খুব কম সহায়ক থ্রেড পেয়েছি এবং এটি ছিল তার মধ্যে একটি, আমি এখানে আমার সমাধান পোস্ট করছি।

সমস্যা : আমি ক্রিমিয়ামের mailtoলিঙ্কগুলিতে ক্লিক করার সময় লিনাক্স মিন্ট 19.2 দারুচিনিটি বিবর্তনটি খুলতে চাইতাম । Gmail ক্রোম: // সেটিংস / হ্যান্ডলারগুলিতে ডিফল্ট হ্যান্ডলার হিসাবে নিবন্ধিত হয়েছিল এবং আমি অন্য কোনও হ্যান্ডলার চয়ন করতে পারি না।

সমাধান : কনসোলে xdg- সেটিংস ব্যবহার করুন

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- এ পাওয়া গেছে এবং আমার মামলার জন্য মানিয়ে নেওয়া হয়েছে ।


0

খোলা

C:\Users\<Username>\AppData\Local\Google\Chrome\User Data\Default

খুলুন Preferencesতারপরে অনুসন্ধান করুন excluded_schemesএটি আপনাকে 'প্রোটোকল_হ্যান্ডলার'-এ পেয়ে যাবে ডিফল্ট অ্যাপ্লিকেশন সহ ইউআরএল খোলার জন্য ক্রোমটিকে পুনরায় সেট করতে এই বর্জনিত স্কিম (গুলি) মুছুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.