"সক্রিয় ট্যাব" অনুমতি

"activeTab" পারমিশনটি একটি এক্সটেনশনকে বর্তমানে সক্রিয় ট্যাবে অস্থায়ী অ্যাক্সেস দেয়, যখন ব্যবহারকারী এক্সটেনশনটি চালু করেন – উদাহরণস্বরূপ, এর অ্যাকশনে ক্লিক করার মাধ্যমে। ট্যাবে অ্যাক্সেস ততক্ষণ স্থায়ী থাকে যতক্ষণ ব্যবহারকারী সেই পৃষ্ঠায় থাকেন, এবং ব্যবহারকারী অন্য পৃষ্ঠায় চলে গেলে বা ট্যাবটি বন্ধ করলে তা বাতিল হয়ে যায়। উদাহরণস্বরূপ, যদি ব্যবহারকারী https://example.com-এ এক্সটেনশনটি চালু করেন এবং তারপর https://example.com/foo-তে যান, তাহলে এক্সটেনশনটির সেই পৃষ্ঠায় অ্যাক্সেস থাকবে। যদি ব্যবহারকারী https://chromium.org-এ যান, তাহলে অ্যাক্সেস বাতিল হয়ে যাবে।

এটি "<all_urls>" এর অনেক ব্যবহারের বিকল্প হিসেবে কাজ করে, কিন্তু ইনস্টলেশনের সময় কোনো সতর্কীকরণ বার্তা প্রদর্শন করে না :

"activeTab" ছাড়া :

সক্রিয় ট্যাব ছাড়া

"activeTab" এর সাথে:

সক্রিয় ট্যাব সহ

সীমাবদ্ধ পৃষ্ঠাগুলিতে, যেমন chrome:// পৃষ্ঠাগুলিতে, প্রবেশাধিকার দেওয়া হয় না।

উদাহরণ

পেজ রেডার নমুনা এক্সটেনশনটি দেখুন:

manifest.json:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab",
    "scripting"
  ],
  "background": {
    "service_worker": "service-worker.js"
  },
  "action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 3
}

সেবাকর্মী:

function reddenPage() {
  document.body.style.backgroundColor = 'red';
}

chrome.action.onClicked.addListener((tab) => {
  // If the tab URL is not set, it is a restricted page.
  if (tab.url) {
    chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: reddenPage
    });
  }
});

অনুপ্রেরণা

এমন একটি ওয়েব ক্লিপিং এক্সটেনশনের কথা ভাবুন, যার একটি অ্যাকশন এবং একটি কনটেক্সট মেনু আইটেম রয়েছে। এই এক্সটেনশনটির হয়তো শুধুমাত্র তখনই ট্যাব অ্যাক্সেস করার প্রয়োজন হয়, যখন এর অ্যাকশনটিতে ক্লিক করা হয়, অথবা যখন এর কনটেক্সট মেনু আইটেমটি কার্যকর করা হয়।

"activeTab" ছাড়া, এই এক্সটেনশনটিকে তার কাজ করার জন্য প্রতিটি ওয়েবসাইটে সম্পূর্ণ ও স্থায়ী অ্যাক্সেসের অনুরোধ করতে হবে, যদি ব্যবহারকারী কখনো এটির সাহায্য চান। এত সাধারণ একটি এক্সটেনশনের উপর এত বেশি ক্ষমতা অর্পণ করা ঠিক নয়। আর যদি এক্সটেনশনটি কখনো হ্যাক হয়, তবে আক্রমণকারী এর সমস্ত অ্যাক্সেস পেয়ে যাবে।

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

'activeTab' যা করতে দেয়

যখন কোনো ট্যাবের জন্য "activeTab" পারমিশন সক্রিয় থাকে, তখন একটি এক্সটেনশন নিম্নলিখিত কাজগুলো করতে পারে:

  • যদি "scripting" পারমিশনটিও ডিক্লেয়ার করা থাকে (যেমন উপরের উদাহরণে ), তাহলে সেই ট্যাবে scripting.insertCSS() অথবা scripting.executeScript() কল করুন।
  • একটি API-এর মাধ্যমে সেই ট্যাবের URL, টাইটেল এবং ফেভিকন পান, যা একটি tabs.Tab অবজেক্ট রিটার্ন করে (মূলত, "activeTab" সাময়িকভাবে হোস্ট পারমিশন প্রদান করে)।
  • webRequest API ব্যবহার করে ট্যাবের প্রধান ফ্রেম অরিজিনে আসা নেটওয়ার্ক অনুরোধগুলো ইন্টারসেপ্ট করুন। এক্সটেনশনটি সাময়িকভাবে ট্যাবের প্রধান ফ্রেম অরিজিনের জন্য হোস্ট পারমিশন পেয়ে যায়।

সক্রিয় ট্যাব চালু করা

নিম্নলিখিত ব্যবহারকারী অঙ্গভঙ্গিগুলি "activeTab" অনুমতি সক্রিয় করে: