বিবরণ
পৃষ্ঠার কন্টেন্ট পড়ার অনুমতি ছাড়াই, পৃষ্ঠার কন্টেন্টের উপর নির্ভর করে অ্যাকশন নিতে chrome.declarativeContent API ব্যবহার করুন।
অনুমতি
declarativeContentধারণা ও ব্যবহার
ডিক্লারেটিভ কন্টেন্ট API আপনাকে হোস্টের অনুমতি যোগ করা বা কন্টেন্ট স্ক্রিপ্ট ইনজেক্ট করার প্রয়োজন ছাড়াই, কোনও ওয়েব পৃষ্ঠার URL-এর উপর নির্ভর করে অথবা কোনও CSS সিলেক্টর পৃষ্ঠার কোনও এলিমেন্টের সাথে ম্যাচ করলে, আপনার এক্সটেনশনের অ্যাকশন চালু করতে দেয়।
ব্যবহারকারী এক্সটেনশনের অ্যাকশনে ক্লিক করার পরে কোনও পৃষ্ঠার সাথে ইন্টার্যাক্ট করতে activeTab অনুমতি ব্যবহার করুন।
নিয়ম
নিয়মে শর্ত ও অ্যাকশন থাকে। কোনও শর্ত পূরণ হলে, সব অ্যাকশন
এক্সিকিউট করা হয়। অ্যাকশনগুলি হল setIcon() এবং showAction()।
PageStateMatcher শুধুমাত্র তখনই ওয়েব পেজের সাথে ম্যাচ করে যখন তালিকাভুক্ত সব
মাপকাঠি পূরণ হয়। এটি কোনও পৃষ্ঠার url, css কম্পাউন্ড সিলেক্টর
অথবা কোনও পৃষ্ঠার বুকমার্ক করা স্ট্যাটাস-এর সাথে ম্যাচ করতে পারে। নিম্নলিখিত নিয়মটি পাসওয়ার্ড ফিল্ড থাকলে
Google পৃষ্ঠায় এক্সটেনশনের অ্যাকশন চালু করে:
let rule1 = {
conditions: [
new browser.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
})
],
actions: [ new browser.declarativeContent.ShowAction() ]
};
ভিডিও সহ Google সাইটের জন্য এক্সটেনশনের অ্যাকশন চালু করতে, আপনি দ্বিতীয় শর্ত যোগ করতে পারেন, কারণ প্রতিটি শর্তই নির্দিষ্ট করা সব অ্যাকশন ট্রিগার করার জন্য যথেষ্ট:
let rule2 = {
conditions: [
new browser.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
}),
new browser.declarativeContent.PageStateMatcher({
css: ["video"]
})
],
actions: [ new browser.declarativeContent.ShowAction() ]
};
onPageChanged ইভেন্ট পরীক্ষা করে দেখে যে কোনও নিয়মে অন্তত একটি পূরণ করা শর্ত আছে কিনা এবং অ্যাকশনগুলি কার্যকর করে। ব্রাউজিং সেশন জুড়ে নিয়মগুলি বজায় থাকে; তাই,
এক্সটেনশন ইনস্টল করার সময়, আগে ইনস্টল করা নিয়মগুলি মুছে ফেলতে আপনাকে প্রথমে removeRules
ব্যবহার করতে হবে এবং তারপরে নতুন নিয়ম রেজিস্টার করতে addRules ব্যবহার করতে হবে।
browser.runtime.onInstalled.addListener(function(details) {
browser.declarativeContent.onPageChanged.removeRules(undefined, function() {
browser.declarativeContent.onPageChanged.addRules([rule2]);
});
});
activeTab অনুমতির মাধ্যমে, আপনার এক্সটেনশন কোনও অনুমতি সংক্রান্ত সতর্কতা দেখাবে না এবং ব্যবহারকারী এক্সটেনশন অ্যাকশনে ক্লিক করলে, এটি শুধুমাত্র প্রাসঙ্গিক পৃষ্ঠায় রান করবে।
পৃষ্ঠার URL ম্যাচিং
URL-এর শর্ত পূরণ হলে PageStateMatcher.pageurl ম্যাচ করে। সবচেয়ে
সাধারণ শর্ত হল হোস্ট, পাথ বা URL-এর কনক্যাটেনেশন, যার পরে থাকে 'রয়েছে', 'সমান', 'প্রিফিক্স' বা
'সাফিক্স'। নিম্নলিখিত সারণীতে কিছু উদাহরণ দেওয়া হল:
| মানদণ্ড | ম্যাচ |
|---|---|
{ hostSuffix: 'google.com' } |
সব Google URL |
{ pathPrefix: '/docs/extensions' } |
এক্সটেনশন ডকুমেন্ট URL |
{ urlContains: 'developer.chrome.com' } |
সব Chrome ডেভেলপার ডকুমেন্ট URL |
সব মাপকাঠিতে ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হয়। মানদণ্ডের সম্পূর্ণ তালিকার জন্য, UrlFilter দেখুন।
CSS ম্যাচিং
PageStateMatcher.css শর্তগুলি অবশ্যই কম্পাউন্ড সিলেক্টর হতে হবে,
যার অর্থ হল আপনি নিজের সিলেক্টরে হোয়াইটস্পেস বা ">"-এর মতো কম্বিনেটর
যোগ করতে পারবেন না। এটি Chrome-কে আরও দক্ষতার সাথে নির্বাচক ম্যাচ করতে সাহায্য করে।
| কম্পাউন্ড সিলেক্টর (ঠিক আছে) | জটিল সিলেক্টর (ঠিক নেই) |
|---|---|
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-এর বুকমার্ক করা অবস্থার সাথে
ম্যাচ করার অনুমতি দেয়। এই শর্ত ব্যবহার করতে হলে, এক্সটেনশন ম্যানিফেস্টে "বুকমার্ক" সংক্রান্ত অনুমতি ঘোষণা করতে হবে।
ধরন
ImageDataType
https://developer.mozilla.org/en-US/docs/Web/API/ImageData দেখুন।
ধরন
ImageData
PageStateMatcher
বিভিন্ন মাপকাঠির উপর ভিত্তি করে ওয়েব পেজের স্ট্যাটাস ম্যাচ করে।
প্রপার্টি
-
কনস্ট্রাক্টর
বাতিল
constructorফাংশনটি দেখতে এইরকম:(arg: PageStateMatcher) => {...}
-
arg
-
ফেরত দেওয়া
-
-
css
string[] ঐচ্ছিক
অ্যারের সব CSS বাছাইকারী যদি পৃষ্ঠার মূল ফ্রেমের মতো একই উৎস সহ ফ্রেমে দেখানো এলিমেন্টের সাথে মেলে, তাহলে এটি ম্যাচ করে। ম্যাচিংয়ের গতি বাড়াতে এই অ্যারের সব সিলেক্টরকে কম্পাউন্ড সিলেক্টর হতে হবে। মনে রাখবেন: শত শত CSS বাছাইকারী বা প্রতি পৃষ্ঠায় শত শত বার ম্যাচ করে এমন CSS বাছাইকারী তালিকাভুক্ত করলে ওয়েবসাইট স্লো হয়ে যেতে পারে।
-
isBookmarked
বুলিয়ান ঐচ্ছিক
Chrome 45+ ব্রাউজার।* Chrome 148 থেকেপৃষ্ঠার বুকমার্ক করা অবস্থা নির্দিষ্ট মানের সমান হলে মিলে যায়। বুকমার্কের অনুমতি প্রয়োজন।
-
pageUrl
UrlFilter ঐচ্ছিক
পৃষ্ঠার মূল URL-এর জন্য
UrlFilter-এর শর্ত পূরণ হলে ম্যাচ করে।
RequestContentScript
ডিক্লেরেটিভ ইভেন্ট অ্যাকশন যা কন্টেন্ট স্ক্রিপ্ট ইনজেক্ট করে।
সতর্কতা: এই অ্যাকশন এখনও পরীক্ষামূলক এবং Chrome-এর স্টেবল বিল্ডে কাজ করে না।
প্রপার্টি
-
কনস্ট্রাক্টর
বাতিল
constructorফাংশনটি দেখতে এইরকম:(arg: RequestContentScript) => {...}
-
ফেরত দেওয়া
-
-
allFrames
বুলিয়ান ঐচ্ছিক
কন্টেন্ট স্ক্রিপ্ট ম্যাচিং পৃষ্ঠার সব ফ্রেমে নাকি শুধু উপরের ফ্রেমে রান করবে। ডিফল্ট হল
false। -
css
string[] ঐচ্ছিক
কন্টেন্ট স্ক্রিপ্টের অংশ হিসেবে ইনজেক্ট করার জন্য CSS ফাইলের নাম।
-
js
string[] ঐচ্ছিক
কন্টেন্ট স্ক্রিপ্টের অংশ হিসেবে ইনজেক্ট করার জন্য জাভাস্ক্রিপ্ট ফাইলের নাম।
-
matchAboutBlank
বুলিয়ান ঐচ্ছিক
about:blankএবংabout:srcdoc-এ কন্টেন্ট স্ক্রিপ্ট যোগ করা হবে কিনা। ডিফল্ট হলfalse।
SetIcon
ডিক্লারেটিভ ইভেন্ট অ্যাকশন যা সংশ্লিষ্ট শর্ত পূরণ হলে এক্সটেনশনের পৃষ্ঠা অ্যাকশন বা ব্রাউজার অ্যাকশনের জন্য n-ডিপ স্কোয়ার আইকন সেট করে। হোস্টের অনুমতি ছাড়াই এই অ্যাকশন ব্যবহার করা যেতে পারে, তবে এক্সটেনশনে অবশ্যই একটি পৃষ্ঠা বা ব্রাউজার অ্যাকশন থাকতে হবে।
imageData বা path-এর মধ্যে যেকোনও একটি উল্লেখ করতে হবে। দুটিই হল ডিকশনারি যা ছবির উপস্থাপনার জন্য পিক্সেলের সংখ্যা ম্যাপ করে। imageData-এ ছবির উপস্থাপনা হল একটি ImageData অবজেক্ট; যেমন, canvas এলিমেন্ট থেকে, যেখানে path-এ ছবির উপস্থাপনা হল এক্সটেনশনের ম্যানিফেস্টের সাথে আপেক্ষিক একটি ছবির ফাইলের পাথ। scale স্ক্রিন পিক্সেল ডিভাইস-ইন্ডিপেন্ডেন্ট পিক্সেলে ফিট করলে, scale * n আইকন ব্যবহার করা হয়। সেই স্কেল না থাকলে, অন্য একটি ছবিকে প্রয়োজনীয় সাইজে ছোট বড় করা হয়।
প্রপার্টি
-
কনস্ট্রাক্টর
বাতিল
constructorফাংশনটি দেখতে এইরকম:(arg: SetIcon) => {...}
-
arg
-
ফেরত দেওয়া
-
-
imageData
ImageData | অবজেক্ট ঐচ্ছিক
সেট করার জন্য আইকনকে উপস্থাপন করে এমন একটি
ImageDataঅবজেক্ট বা একটি ডিকশনারি {size -> ImageData}। আইকনটি ডিকশনারি হিসেবে উল্লেখ করা হলে, স্ক্রিনের পিক্সেল ঘনত্বের উপর নির্ভর করে ব্যবহৃত ছবিটি বেছে নেওয়া হয়। একটি স্ক্রিন স্পেস ইউনিটে ফিট হওয়া ছবির পিক্সেলের সংখ্যাscale-এর সমান হলে,scale * nসাইজের ছবি বেছে নেওয়া হয়, যেখানে n হল UI-তে আইকনের সাইজ। অন্তত একটি ছবি উল্লেখ করতে হবে। মনে রাখবেন,details.imageData = fooহলdetails.imageData = {'16': foo}-এর সমতুল্য।
ShowAction
একটি ঘোষণামূলক ইভেন্ট অ্যাকশন যা সংশ্লিষ্ট শর্ত পূরণ করার সময় এক্সটেনশনের টুলবার অ্যাকশন চালু করা অবস্থায় সেট করে। হোস্টের অনুমতি ছাড়াই এই অ্যাকশন ব্যবহার করা যাবে। এক্সটেনশনের কাছে activeTab অনুমতি থাকলে, পৃষ্ঠা অ্যাকশনে ক্লিক করলে অ্যাক্টিভ ট্যাবে অ্যাক্সেস পাওয়া যায়।
যেসব পৃষ্ঠায় শর্ত পূরণ করা হয়নি সেখানে এক্সটেনশনের টুলবার অ্যাকশন গ্রে-স্কেল হবে এবং এটিতে ক্লিক করলে অ্যাকশন ট্রিগার হওয়ার পরিবর্তে সংশ্লিষ্ট মেনু খুলে যাবে।
প্রপার্টি
-
কনস্ট্রাক্টর
বাতিল
constructorফাংশনটি দেখতে এইরকম:(arg: ShowAction) => {...}
-
arg
-
ফেরত দেওয়া
-
ShowPageAction
declarativeContent.ShowAction ব্যবহার করুন।
একটি ডিক্লারেটিভ ইভেন্ট অ্যাকশন যা সংশ্লিষ্ট শর্ত পূরণ করার সময় এক্সটেনশনের পৃষ্ঠা অ্যাকশনকে চালু করা অবস্থায় সেট করে। হোস্টের অনুমতি ছাড়াই এই অ্যাকশন ব্যবহার করা যেতে পারে, তবে এক্সটেনশনে অবশ্যই একটি পৃষ্ঠা অ্যাকশন থাকতে হবে। এক্সটেনশনের কাছে activeTab অনুমতি থাকলে, পৃষ্ঠা অ্যাকশনে ক্লিক করলে অ্যাক্টিভ ট্যাবে অ্যাক্সেস পাওয়া যায়।
যেসব পৃষ্ঠায় শর্ত পূরণ করা হয়নি সেখানে এক্সটেনশনের টুলবার অ্যাকশন গ্রে-স্কেল হবে এবং এটিতে ক্লিক করলে অ্যাকশন ট্রিগার হওয়ার পরিবর্তে সংশ্লিষ্ট মেনু খুলে যাবে।
প্রপার্টি
-
কনস্ট্রাক্টর
বাতিল
constructorফাংশনটি দেখতে এইরকম:(arg: ShowPageAction) => {...}
-
arg
-
ফেরত দেওয়া
-
ইভেন্ট
onPageChanged
addRules, removeRules ও getRules নিয়ে গঠিত Declarative Event API প্রদান করে।