chrome.declarativeContent

রিফ্রেশ তারিখ: ২০২৬-০৯-২৫ রোবটস: নোইনডেক্স

বর্ণনা

কোনো পৃষ্ঠার বিষয়বস্তু পড়ার অনুমতির প্রয়োজন ছাড়াই, সেই পৃষ্ঠার বিষয়বস্তুর ওপর নির্ভর করে বিভিন্ন পদক্ষেপ নিতে chrome.declarativeContent API ব্যবহার করুন।

অনুমতি

declarativeContent

ব্যবহার

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

ব্যবহারকারী এক্সটেনশনের অ্যাকশনে ক্লিক করার পর কোনো পেজের সাথে ইন্টারঅ্যাক্ট করতে activeTab পারমিশনটি ব্যবহার করুন।

নিয়ম

নিয়মগুলো শর্ত এবং ক্রিয়া নিয়ে গঠিত। যদি কোনো একটি শর্ত পূরণ হয়, তবে সমস্ত ক্রিয়া সম্পাদিত হয়। ক্রিয়াগুলো হলো setIcon এবং showAction ।

PageStateMatcher শুধুমাত্র তখনই ওয়েব পেজ ম্যাচ করে, যখন তালিকাভুক্ত সমস্ত শর্ত পূরণ হয়। এটি একটি পেজের ইউআরএল , একটি সিএসএস কম্পাউন্ড সিলেক্টর অথবা কোনো পেজের বুকমার্ক করা অবস্থা ম্যাচ করতে পারে। যখন একটি পাসওয়ার্ড ফিল্ড উপস্থিত থাকে, তখন নিম্নলিখিত নিয়মটি গুগল পেজগুলিতে এক্সটেনশনটির অ্যাকশন সক্রিয় করে:

let rule1 = {
  conditions: [
    new chrome.declarativeContent.PageStateMatcher({
      pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
      css: ["input[type='password']"]
    })
  ],
  actions: [ new chrome.declarativeContent.ShowAction() ]
};

ভিডিও সহ গুগল সাইটগুলির জন্যও এক্সটেনশনটির অ্যাকশন সক্রিয় করতে, আপনি একটি দ্বিতীয় শর্ত যোগ করতে পারেন, কারণ প্রতিটি শর্তই সমস্ত নির্দিষ্ট অ্যাকশন ট্রিগার করার জন্য যথেষ্ট:

let rule2 = {
  conditions: [
    new chrome.declarativeContent.PageStateMatcher({
      pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
      css: ["input[type='password']"]
    }),
    new chrome.declarativeContent.PageStateMatcher({
      css: ["video"]
    })
  ],
  actions: [ new chrome.declarativeContent.ShowAction() ]
};

onPageChanged ইভেন্টটি পরীক্ষা করে দেখে যে কোনো নিয়মের অন্তত একটি শর্ত পূরণ হয়েছে কিনা এবং সেই অনুযায়ী অ্যাকশনগুলো সম্পাদন করে। নিয়মগুলো ব্রাউজিং সেশন জুড়ে স্থায়ী থাকে; তাই, এক্সটেনশন ইনস্টল করার সময় আপনার প্রথমে removeRules ব্যবহার করে পূর্বে ইনস্টল করা নিয়মগুলো মুছে ফেলা উচিত এবং তারপরে addRules ব্যবহার করে নতুন নিয়মগুলো রেজিস্টার করা উচিত।

chrome.runtime.onInstalled.addListener(function(details) {
  chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
    chrome.declarativeContent.onPageChanged.addRules([rule2]);
  });
});

activeTab পারমিশন থাকলে, আপনার এক্সটেনশন কোনো পারমিশন সতর্কতা প্রদর্শন করবে না এবং ব্যবহারকারী যখন এক্সটেনশনের অ্যাকশনে ক্লিক করবেন, তখন এটি শুধুমাত্র প্রাসঙ্গিক পেজগুলোতেই চলবে।

পৃষ্ঠার URL মেলানো

URL-এর শর্তগুলো পূরণ হলে PageStateMatcher.pageurl মিলে যায়। সবচেয়ে সাধারণ শর্তগুলো হলো host, path, বা url-এর যেকোনো একটির সংযুক্তি, যার পরে Contains, Equals, Prefix, বা Suffix থাকে। নিচের সারণিতে কয়েকটি উদাহরণ দেওয়া হলো:

মানদণ্ড ম্যাচ
{ hostSuffix: 'google.com' } সমস্ত গুগল ইউআরএল
{ pathPrefix: '/docs/extensions' } এক্সটেনশন ডক্স ইউআরএল
{ urlContains: 'developer.chrome.com' } সমস্ত ক্রোম ডেভেলপার ডক্স ইউআরএল

সমস্ত শর্তই কেস-সেনসিটিভ। শর্তাবলির সম্পূর্ণ তালিকার জন্য, UrlFilter দেখুন।

সিএসএস মিলানো

PageStateMatcher.css শর্তগুলো অবশ্যই যৌগিক সিলেক্টর হতে হবে, অর্থাৎ আপনি আপনার সিলেক্টরের মধ্যে স্পেস বা " > " এর মতো কম্বিনেটর অন্তর্ভুক্ত করতে পারবেন না। এটি ক্রোমকে আরও দক্ষতার সাথে সিলেক্টরগুলো মেলাতে সাহায্য করে।

যৌগিক নির্বাচক (ঠিক আছে) জটিল নির্বাচক (ঠিক নয়)
a div p
iframe.special[src^='http'] p>span.highlight
ns|* p + ol
#abcd:checked p::first-line

CSS কন্ডিশন শুধুমাত্র প্রদর্শিত এলিমেন্টগুলোর সাথেই মেলে: যদি আপনার সিলেক্টরের সাথে মেলে এমন কোনো এলিমেন্ট বা তার কোনো প্যারেন্ট এলিমেন্টের display:none display:none , তাহলে কন্ডিশনটি মেলে না। visibility:hidden দিয়ে স্টাইল করা, স্ক্রিনের বাইরে পজিশন করা, বা অন্য এলিমেন্ট দ্বারা লুকানো এলিমেন্টগুলোও আপনার কন্ডিশন মেলাতে পারে।

বুকমার্ক করা রাজ্য মেলানো

PageStateMatcher.isBookmarked কন্ডিশনটি ব্যবহারকারীর প্রোফাইলে থাকা বর্তমান URL-টির বুকমার্ক করা অবস্থা মেলানোর সুযোগ দেয়। এই কন্ডিশনটি ব্যবহার করার জন্য এক্সটেনশন ম্যানিফেস্টে অবশ্যই "bookmarks" পারমিশনটি ঘোষণা করতে হবে।

প্রকারভেদ

প্রকার

ইমেজ ডেটা

PageStateMatcher

বিভিন্ন মানদণ্ডের ভিত্তিতে একটি ওয়েব পেজের অবস্থার সাথে মিল খুঁজে বের করে।

বৈশিষ্ট্য

  • নির্মাতা

    শূন্যতা

    constructor ফাংশনটি দেখতে এইরকম:

    (arg: PageStateMatcher) => {...}

  • সিএসএস

    স্ট্রিং[] ঐচ্ছিক

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

  • বুকমার্ক করা আছে

    বুলিয়ান ঐচ্ছিক

    ক্রোম ৪৫+

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

  • পেজইউআরএল

    পেজটির টপ-লেভেল ইউআরএল-এর জন্য UrlFilter এর শর্তগুলো পূরণ হলে এটি মিলে যায়।

RequestContentScript

একটি ডিক্লারেটিভ ইভেন্ট অ্যাকশন যা একটি কন্টেন্ট স্ক্রিপ্ট ইনজেক্ট করে।

সতর্কীকরণ: এই ব্যবস্থাটি এখনও পরীক্ষামূলক এবং ক্রোমের স্থিতিশীল বিল্ডগুলিতে সমর্থিত নয়।

বৈশিষ্ট্য

  • নির্মাতা

    শূন্যতা

    constructor ফাংশনটি দেখতে এইরকম:

    (arg: RequestContentScript) => {...}

  • সমস্ত ফ্রেম

    বুলিয়ান ঐচ্ছিক

    কন্টেন্ট স্ক্রিপ্টটি সংশ্লিষ্ট পেজের সব ফ্রেমে চলবে, নাকি শুধু উপরের ফ্রেমে চলবে। ডিফল্ট মান হলো false ।

  • সিএসএস

    স্ট্রিং[] ঐচ্ছিক

    কন্টেন্ট স্ক্রিপ্টের অংশ হিসেবে অন্তর্ভুক্ত করার জন্য CSS ফাইলগুলোর নাম।

  • js

    স্ট্রিং[] ঐচ্ছিক

    কন্টেন্ট স্ক্রিপ্টের অংশ হিসেবে অন্তর্ভুক্ত করার জন্য জাভাস্ক্রিপ্ট ফাইলগুলোর নাম।

  • ম্যাচঅ্যাবাউটব্ল্যাঙ্ক

    বুলিয়ান ঐচ্ছিক

    about:blank এবং about:srcdoc এ কন্টেন্ট স্ক্রিপ্ট যুক্ত করা হবে কিনা। ডিফল্ট মান হলো false ।

SetIcon

একটি ডিক্লারেটিভ ইভেন্ট অ্যাকশন যা সংশ্লিষ্ট শর্ত পূরণ হলে এক্সটেনশনের পেজ অ্যাকশন বা ব্রাউজার অ্যাকশনের জন্য এন-ডিপ স্কয়ার আইকন সেট করে। এই অ্যাকশনটি হোস্ট পারমিশন ছাড়াই ব্যবহার করা যায়, তবে এক্সটেনশনটিতে অবশ্যই একটি পেজ বা ব্রাউজার অ্যাকশন থাকতে হবে।

imageData অথবা path এর মধ্যে ঠিক একটি অবশ্যই নির্দিষ্ট করতে হবে। উভয়ই ডিকশনারি, যা পিক্সেলের সংখ্যাকে একটি ইমেজ রিপ্রেজেন্টেশনের সাথে ম্যাপ করে। imageData তে থাকা ইমেজ রিপ্রেজেন্টেশনটি একটি `ImageData` অবজেক্ট; উদাহরণস্বরূপ, একটি canvas এলিমেন্ট থেকে নেওয়া, অন্যদিকে path এ থাকা ইমেজ রিপ্রেজেন্টেশনটি হলো এক্সটেনশনের ম্যানিফেস্টের সাপেক্ষে একটি ইমেজ ফাইলের পাথ। যদি scale স্ক্রিন পিক্সেলগুলো একটি ডিভাইস-নিরপেক্ষ পিক্সেলের মধ্যে এঁটে যায়, তাহলে scale * n আইকনটি ব্যবহৃত হয়। যদি সেই স্কেলটি অনুপস্থিত থাকে, তবে অন্য একটি ইমেজকে প্রয়োজনীয় আকারে রিসাইজ করা হয়।

বৈশিষ্ট্য

  • নির্মাতা

    শূন্যতা

    constructor ফাংশনটি দেখতে এইরকম:

    (arg: SetIcon) => {...}

  • ছবির ডেটা

    ইমেজ ডেটা | অবজেক্ট ঐচ্ছিক

    সেট করার জন্য একটি আইকনকে উপস্থাপন করতে হয় একটি ImageData অবজেক্ট অথবা একটি ডিকশনারি {size -> ImageData}। যদি আইকনটি একটি ডিকশনারি হিসাবে নির্দিষ্ট করা হয়, তবে ব্যবহৃত ছবিটি স্ক্রিনের পিক্সেল ঘনত্বের উপর নির্ভর করে নির্বাচিত হয়। যদি এক স্ক্রিন স্পেস ইউনিটে ছবির পিক্সেলের সংখ্যা scale সমান হয়, তাহলে scale * n আকারের একটি ছবি নির্বাচিত হয়, যেখানে n হলো UI-তে আইকনের আকার। অন্তত একটি ছবি অবশ্যই নির্দিষ্ট করতে হবে। মনে রাখবেন যে details.imageData = foo এবং details.imageData = {'16': foo} এর সমতুল্য।

ShowAction

ক্রোম ৯৭+

একটি ডিক্লারেটিভ ইভেন্ট অ্যাকশন যা সংশ্লিষ্ট শর্ত পূরণ হলে এক্সটেনশনের টুলবার অ্যাকশনকে সক্রিয় অবস্থায় সেট করে। এই অ্যাকশনটি হোস্ট পারমিশন ছাড়াই ব্যবহার করা যায়। যদি এক্সটেনশনটির activeTab পারমিশন থাকে, তাহলে পেজ অ্যাকশনে ক্লিক করলে সক্রিয় ট্যাবে অ্যাক্সেস পাওয়া যায়।

যেসব পেজে শর্তগুলো পূরণ হয় না, সেখানে এক্সটেনশনটির টুলবার অ্যাকশনটি ধূসর রঙের হবে এবং তাতে ক্লিক করলে অ্যাকশনটি চালু না হয়ে কনটেক্সট মেনু খুলে যাবে।

বৈশিষ্ট্য

ShowPageAction

ক্রোম ৯৭ থেকে বাতিল করা হয়েছে

অনুগ্রহ করে declarativeContent.ShowAction ব্যবহার করুন।

একটি ডিক্লারেটিভ ইভেন্ট অ্যাকশন যা সংশ্লিষ্ট শর্ত পূরণ হলে এক্সটেনশনের পেজ অ্যাকশনকে সক্রিয় অবস্থায় সেট করে। এই অ্যাকশনটি হোস্ট পারমিশন ছাড়াই ব্যবহার করা যায়, তবে এক্সটেনশনটিতে অবশ্যই একটি পেজ অ্যাকশন থাকতে হবে। যদি এক্সটেনশনটির activeTab পারমিশন থাকে, তাহলে পেজ অ্যাকশনটিতে ক্লিক করলে সক্রিয় ট্যাবে অ্যাক্সেস পাওয়া যায়।

যেসব পেজে শর্তগুলো পূরণ হয় না, সেখানে এক্সটেনশনটির টুলবার অ্যাকশনটি ধূসর রঙের হবে এবং তাতে ক্লিক করলে অ্যাকশনটি চালু না হয়ে কনটেক্সট মেনু খুলে যাবে।

বৈশিষ্ট্য

ইভেন্টগুলি

onPageChanged

addRules , removeRules , এবং getRules নিয়ে গঠিত ডিক্লারেটিভ ইভেন্ট এপিআই প্রদান করে।