সেবা কর্মীদের ইভেন্ট

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

এক্সটেনশন ইভেন্ট ঘোষণা

পরিষেবা কর্মীদের ইভেন্ট হ্যান্ডলারদের গ্লোবাল স্কোপে ঘোষণা করা দরকার, যার অর্থ তাদের স্ক্রিপ্টের শীর্ষ স্তরে থাকা উচিত এবং ফাংশনের ভিতরে নেস্ট করা উচিত নয়। এটি নিশ্চিত করে যে তারা প্রাথমিক স্ক্রিপ্ট এক্সিকিউশনে সিঙ্ক্রোনাসভাবে নিবন্ধিত হয়েছে, যা শুরু হওয়ার সাথে সাথেই পরিষেবা কর্মীকে ইভেন্টগুলি প্রেরণ করতে Chrome সক্ষম করে৷ যেমন:

পরামর্শ দেওয়া হয় না
chrome.storage.local.get(["badgeText"], ({ badgeText }) => {
  chrome.action.setBadgeText({ text: badgeText });
  chrome.action.onClicked.addListener(handleActionClick);
});

ভালো
chrome.action.onClicked.addListener(handleActionClick);

chrome.storage.local.get(["badgeText"], ({ badgeText }) => {
  chrome.action.setBadgeText({ text: badgeText });
});

সাধারণ ঘটনা

এক্সটেনশন পরিষেবা কর্মীরা নির্দিষ্ট API-এ ইভেন্ট সমর্থন করে। কয়েকটি সাধারণ বিষয় নিম্নে বর্ণিত হয়েছে। মনে রাখবেন যে এই APIগুলির মধ্যে কিছু ব্যবহার করার জন্য অনুমতি প্রয়োজন এবং অন্যদের ইভেন্ট, পদ্ধতি বা বৈশিষ্ট্য থাকতে পারে যা Chrome এর সমস্ত সংস্করণে উপলব্ধ নয়৷ বিশদ বিবরণের জন্য, লিঙ্ক করা API ডকুমেন্টেশন দেখুন, বিশেষ করে আপনি যে ইভেন্ট, পদ্ধতি বা বৈশিষ্ট্যগুলি ব্যবহার করতে চান।

chrome.action
আপনার এক্সটেনশনের টুলবার আইকনের সাথে একটি ব্যবহারকারীর ইন্টারঅ্যাকশনের প্রতিক্রিয়া হিসাবে বরখাস্ত করা হয়েছে, সেই ক্রিয়াটি একটি নির্দিষ্ট পৃষ্ঠা (ট্যাব) বা পুরো এক্সটেনশনের জন্যই হোক না কেন৷
chrome.management
ইনস্টলেশন, আনইনস্টল করা, সক্ষম করা এবং এক্সটেনশন নিষ্ক্রিয় করার সাথে সম্পর্কিত ইভেন্টগুলি প্রদান করে।
chrome.notifications
এক্সটেনশন দ্বারা উত্পন্ন সিস্টেম বিজ্ঞপ্তিগুলির সাথে ব্যবহারকারীর মিথস্ক্রিয়া সম্পর্কিত ঘটনাগুলি প্রদান করে৷
chrome.permissions
ব্যবহারকারী কখন এক্সটেনশন অনুমতি মঞ্জুর বা প্রত্যাহার করে তা নির্দেশ করে৷
chrome.runtime
এক্সটেনশন লাইফসাইকেল সম্পর্কিত ইভেন্ট, এক্সটেনশনের অন্যান্য অংশ থেকে পাঠানো বার্তা এবং উপলব্ধ এক্সটেনশন বা Chrome আপডেটের বিজ্ঞপ্তি প্রদান করে।
chrome.storage.onChanged
যখনই কোন StorageArea অবজেক্ট সাফ করা হয় বা যখন একটি কী-এর মান পরিবর্তন করা হয় বা সেট করা হয়। মনে রাখবেন যে প্রতিটি StorageArea উদাহরণের নিজস্ব onChanged ইভেন্ট রয়েছে।
chrome.webNavigation
ইন-ফ্লাইট নেভিগেশন অনুরোধের অবস্থা সম্পর্কে তথ্য প্রদান করে।

ফিল্টার

নির্দিষ্ট ব্যবহারের ক্ষেত্রে ইভেন্টগুলিকে সীমাবদ্ধ করতে, বা অপ্রয়োজনীয় ইভেন্ট কলগুলি দূর করতে, ইভেন্ট ফিল্টার সমর্থন করে এমন API ব্যবহার করুন৷ উদাহরণস্বরূপ, একজন ব্যবহারকারী যখন একটি নির্দিষ্ট ওয়েবসাইটে নেভিগেট করে তখন সনাক্ত করতে tabs.onUpdated ইভেন্টের জন্য একটি এক্সটেনশন শোনার কথা বিবেচনা করুন৷ এই ইভেন্টটি প্রতিটি ট্যাবে প্রতিটি নেভিগেশনে কল করা হবে। পরিবর্তে, একটি ফিল্টার দিয়ে webNavigation.onCompleted ব্যবহার করুন। যেমন:

const filter = {
  url: [
    {
      urlMatches: 'https://www.google.com/',
    },
  ],
};

chrome.webNavigation.onCompleted.addListener(() => {
  console.info("The user has loaded my favorite website!");
}, filter);

ওয়েব পরিষেবা কর্মী ইভেন্ট

সম্প্রসারণ পরিষেবা কর্মীরা অন্যত্র বর্ণিত জীবনচক্র ইভেন্টগুলির চেয়ে বেশি সমর্থন করে৷

ServiceWorkerGlobal.fetch

যখন এক্সটেনশন প্যাকেজ থেকে কিছু পুনরুদ্ধার করা হয় বা যখন একটি এক্সটেনশন বা পপআপ স্ক্রিপ্ট থেকে fetch() এবং XMLHttpRequest() কল করা হয় তখন বহিস্কার করা হয়। (সামগ্রী স্ক্রিপ্ট থেকে কলগুলি পরিষেবা কর্মী fetch হ্যান্ডলার দ্বারা বাধা দেওয়া হয় না।) পরবর্তী ক্ষেত্রে, আপনাকে manifest.json"host_permissions" কী-তে আনতে চান এমন পৃষ্ঠাগুলির URL যোগ করতে হবে।

ServiceWorkerGlobal.message

পরিষেবা কর্মী বার্তা পাসিং এক্সটেনশন মেসেজিং পাসিং ছাড়াও উপলব্ধ, কিন্তু দুটি সিস্টেম আন্তঃপ্রক্রিয়াযোগ্য নয়। এর মানে হল sendMessage() ব্যবহার করে প্রেরিত বার্তাগুলি (যা বেশ কয়েকটি এক্সটেনশন API থেকে পাওয়া যায়) পরিষেবা কর্মী বার্তা হ্যান্ডলারদের দ্বারা আটকানো হয় না। একইভাবে, postMessage() ব্যবহার করে প্রেরিত বার্তাগুলি এক্সটেনশন মেসেজ হ্যান্ডলার দ্বারা আটকানো হয় না। উভয় ধরনের বার্তা হ্যান্ডলার—অর্থাৎ ServiceWorkerGlobal.message এবং chrome.runtime.onMessage এক্সটেনশন পরিষেবা কর্মীদের সমর্থিত৷

পরিষেবা কর্মী মেসেজিং ব্যবহার করার জন্য আপনার কাছে নির্দিষ্ট কারণ না থাকলে আপনার এক্সটেনশন মেসেজিং পছন্দ করা উচিত।