ম্যানিফেস্ট - বিষয়বস্তু স্ক্রিপ্ট

"content_scripts" কী একটি নির্দিষ্ট URL প্যাটার্নের সাথে মেলে এমন একটি পৃষ্ঠা খোলা হলে প্রতিবার ব্যবহার করার জন্য একটি স্ট্যাটিকভাবে লোড করা JavaScript বা CSS ফাইল নির্দিষ্ট করে। এক্সটেনশনগুলি প্রোগ্রাম্যাটিকভাবে বিষয়বস্তু স্ক্রিপ্টগুলিকে ইনজেক্ট করতে পারে, বিস্তারিত জানার জন্য স্ক্রিপ্ট ইনজেকশন দেখুন।

উদ্ভাসিত

এইগুলি "content_scripts" এর জন্য সমর্থিত কী। শুধুমাত্র "matches" কী এবং হয় "js" বা "css" প্রয়োজন।

manifest.json

{
 "name": "My extension",
 ...
 "content_scripts": [
   {
     "matches": ["https://*.example.com/*"],
     "css": ["my-styles.css"],
     "js": ["content-script.js"],
     "exclude_matches": ["*://*/*foo*"],
     "include_globs": ["*example.com/???s/*"],
     "exclude_globs": ["*bar*"],     
     "all_frames": false,
     "match_origin_as_fallback": false,
     "match_about_blank": false,
     "run_at": "document_idle",
     "world": "ISOLATED",
   }
 ],
 ...
}

ফাইল

প্রতিটি ফাইলে অবশ্যই এক্সটেনশনের রুট ডিরেক্টরিতে একটি রিসোর্সের একটি আপেক্ষিক পাথ থাকতে হবে৷ লিডিং স্ল্যাশ ( / ) স্বয়ংক্রিয়ভাবে ছাঁটা হয়। প্রতিটি ফাইল কখন ইনজেকশন করা হবে তা "run_at" কী নির্দিষ্ট করে।

"css" - অ্যারে
ঐচ্ছিক CSS ফাইল পাথের একটি অ্যারে, এই অ্যারের ক্রমানুসারে ইনজেক্ট করা হয় এবং কোনো DOM নির্মাণ বা পৃষ্ঠা রেন্ডারিং হওয়ার আগে।
"js" - অ্যারে,
ঐচ্ছিক জাভাস্ক্রিপ্ট ফাইল পাথগুলির একটি অ্যারে, সিএসএস ফাইলগুলি ইনজেকশন করার পরে এই অ্যারেতে প্রদর্শিত ক্রম অনুসারে ইনজেকশন করা হয়। অ্যারের প্রতিটি স্ট্রিং অবশ্যই এক্সটেনশনের রুট ডিরেক্টরির একটি সম্পদের আপেক্ষিক পথ হতে হবে। লিডিং স্ল্যাশ ('/') স্বয়ংক্রিয়ভাবে ছাঁটা হয়।

মিল ইউআরএল

শুধুমাত্র "matches" সম্পত্তি প্রয়োজন. তারপরে আপনি "exclude_matches" , "include_globs" , এবং "exclude_globs" ব্যবহার করতে পারেন কোন URL-এ কোড ইনজেক্ট করতে হবে তা কাস্টমাইজ করতে। "matches" কী একটি সতর্কতা ট্রিগার করবে।

"matches" - অ্যারে
প্রয়োজন কোন URL প্যাটার্নগুলি কন্টেন্ট স্ক্রিপ্টে ইনজেক্ট করতে হবে তা নির্দিষ্ট করে। সিনট্যাক্সের জন্য ম্যাচ প্যাটার্নস দেখুন।
"exclude_matches" - অ্যারে
ঐচ্ছিক কন্টেন্ট স্ক্রিপ্ট ইনজেক্ট করার জন্য URL প্যাটার্ন বাদ দেয়। সিনট্যাক্সের জন্য ম্যাচ প্যাটার্নস দেখুন।
"include_globs" - অ্যারে
ঐচ্ছিক এই গ্লোবের সাথে মেলে শুধুমাত্র সেই URLগুলি অন্তর্ভুক্ত করতে মিলের পরে প্রয়োগ করা হয়৷ @include Greasemonkey কীওয়ার্ড অনুকরণ করার উদ্দেশ্যে।
"exclude_globs" - অ্যারে
ঐচ্ছিক এই গ্লোবের সাথে মেলে এমন URLগুলি বাদ দিতে মিলের পরে প্রয়োগ করা হয়েছে৷ @exclude Greasemonkey কীওয়ার্ড অনুকরণ করার উদ্দেশ্যে।

গ্লোব ইউআরএল হল সেগুলি যাতে "ওয়াইল্ডকার্ড" * এবং প্রশ্ন চিহ্ন থাকে। ওয়াইল্ডকার্ড * একটি খালি স্ট্রিং সহ যেকোনো দৈর্ঘ্যের যেকোনো স্ট্রিংয়ের সাথে মেলে, যখন প্রশ্ন চিহ্ন ? যেকোনো একক অক্ষরের সাথে মিলে যায়।

বিষয়বস্তু স্ক্রিপ্ট একটি পৃষ্ঠায় ইনজেক্ট করা হয় যদি:

  • এর URL যেকোন "matches" এবং "include_globs" প্যাটার্নের সাথে মেলে।
  • এবং URLটি "exclude_matches" বা "exclude_globs" প্যাটার্নের সাথে মেলে না।

গ্লোব এবং ইউআরএল মেলানো উদাহরণ

"include_globs"

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "include_globs": ["https://???.example.com/foo/*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
মেলে
https://www.example.com/foo/bar
https://the.example.com/foo/
মেলে না
https://my.example.com/foo/bar
https://example.com/foo/*
https://www.example.com/foo

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "include_globs": ["*example.com/???s/*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
মেলে
https://www.example.com/arts/index.html
https://www.example.com/jobs/index.html
মেলে না
https://www.example.com/sports/index.html
https://www.example.com/music/index.html

"exclude_globs"

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "exclude_globs": ["*science*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
মেলে
https://history.example.com
https://.example.com/music
মেলে না
https://science.example.com
https://www.example.com/science

উন্নত কাস্টমাইজেশন উদাহরণ

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "exclude_matches": ["*://*/*business*"],
      "include_globs": ["*example.com/???s/*"],
      "exclude_globs": ["*science*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
মেলে
https://www.example.com/arts/index.html
https://.example.com/jobs/index.html
মেলে না
https://science.example.com
https://www.example.com/jobs/business
https://www.example.com/science

ফ্রেম

"all_frames" কী সুনির্দিষ্ট করে যে বিষয়বস্তু স্ক্রিপ্টটি নির্দিষ্ট URL প্রয়োজনীয়তার সাথে মেলে এমন সমস্ত ফ্রেমে ইনজেকশন করা উচিত কিনা। যদি false সেট করা হয় তবে এটি শুধুমাত্র শীর্ষস্থানীয় ফ্রেমে ইনজেক্ট করবে। এটি একটি about:blank ফ্রেমে ইনজেক্ট করতে "match_about_blank" এর সাথে ব্যবহার করা যেতে পারে।

data: , blob: , এবং filesystem: মতো অন্যান্য ফ্রেমে ইনজেক্ট করতে, "match_origin_as_fallback" কে true সেট করুন। বিস্তারিত জানার জন্য, সম্পর্কিত ফ্রেমে ইনজেকশন দেখুন

"all_frames" বুলিয়ান
ঐচ্ছিক ডিফল্ট থেকে false , যার অর্থ শুধুমাত্র উপরের ফ্রেমটি মিলেছে৷ সত্য হিসাবে সেট করা হলে, এটি সমস্ত ফ্রেমে ইনজেকশন করবে, এমনকি ফ্রেমটি ট্যাবের শীর্ষস্থানীয় ফ্রেম না হলেও। প্রতিটি ফ্রেম ইউআরএলের প্রয়োজনীয়তার জন্য স্বাধীনভাবে চেক করা হয়, ইউআরএলের প্রয়োজনীয়তা পূরণ না হলে এটি চাইল্ড ফ্রেমে প্রবেশ করাবে না।
"match_about_blank" - বুলিয়ান
ঐচ্ছিক ডিফল্ট থেকে false । স্ক্রিপ্টটি একটি about:blank ফ্রেমে ইনজেক্ট করা উচিত যেখানে প্যারেন্ট URL "matches" -এ ঘোষিত প্যাটার্নগুলির একটির সাথে মেলে।
"match_origin_as_fallback" - বুলিয়ান
ঐচ্ছিক ডিফল্ট থেকে false । স্ক্রিপ্টটি এমন ফ্রেমে ইনজেক্ট করা উচিত যা একটি মিলিত উত্স দ্বারা তৈরি করা হয়েছিল, তবে যার URL বা উত্স সরাসরি প্যাটার্নের সাথে মেলে না৷ এর মধ্যে রয়েছে বিভিন্ন স্কিম সহ ফ্রেম, যেমন about: , data: , blob: , এবং filesystem: .

রান টাইম এবং এক্সিকিউশন এনভায়রনমেন্ট

ডিফল্টরূপে, নথি এবং সমস্ত সংস্থান লোড করা শেষ হলে বিষয়বস্তু স্ক্রিপ্টগুলি ইনজেকশন করা হয় এবং একটি ব্যক্তিগত বিচ্ছিন্ন কার্যকরী পরিবেশে বাস করে যা পৃষ্ঠা বা অন্যান্য এক্সটেনশনগুলিতে অ্যাক্সেসযোগ্য নয়। আপনি নিম্নলিখিত কীগুলিতে এই ডিফল্টগুলি পরিবর্তন করতে পারেন:

"run_at" - document_start | document_end | document_idle
ঐচ্ছিক স্ক্রিপ্ট কখন পৃষ্ঠায় ইনজেকশন করা উচিত তা নির্দিষ্ট করে। এটি Document.readyState এর লোডিং অবস্থার সাথে মিলে যায়:
  • "document_start" : DOM এখনও লোড হচ্ছে।
  • "document_end" : পৃষ্ঠার সংস্থানগুলি এখনও লোড হচ্ছে৷
  • "document_idle" : DOM এবং সংস্থানগুলি লোড করা শেষ হয়েছে৷ এটি ডিফল্ট।
"world" - ISOLATED | MAIN
ঐচ্ছিক একটি স্ক্রিপ্টের মধ্যে চালানোর জন্য জাভাস্ক্রিপ্ট বিশ্ব। ডিফল্ট "ISOLATED" , যা এক্সিকিউশন এনভায়রনমেন্ট কন্টেন্ট স্ক্রিপ্টের জন্য অনন্য। "MAIN" ওয়ার্ল্ড বেছে নেওয়ার মানে হল স্ক্রিপ্টটি হোস্ট পেজের জাভাস্ক্রিপ্টের সাথে এক্সিকিউশন এনভায়রনমেন্ট শেয়ার করবে। আরও জানতে বিচ্ছিন্ন বিশ্বে কাজ দেখুন।

উদাহরণ

ম্যানিফেস্টে একটি বিষয়বস্তু স্ক্রিপ্ট ইনজেক্ট করে এমন একটি এক্সটেনশন তৈরি করতে প্রতিটি পৃষ্ঠার টিউটোরিয়ালটিতে রান দেখুন।