ইভেন্ট-চালিত পটভূমি স্ক্রিপ্টে স্থানান্তর করুন

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

একটি ইভেন্ট-ভিত্তিক অ-স্থির মডেলে একটি স্থায়ী পটভূমি স্ক্রিপ্ট স্থানান্তর করে একটি এক্সটেনশনের কর্মক্ষমতা উন্নত করুন৷ ডিফল্টরূপে, "persistent" সত্য হিসাবে সেট করা হয়৷

অধ্যবসায়কে মিথ্যা হিসাবে চিহ্নিত করুন

এক্সটেনশন ম্যানিফেস্ট ফাইলে "background" কীটি সনাক্ত করুন, তারপর "persistent" ক্ষেত্রটিকে মিথ্যাতে যুক্ত করুন বা আপডেট করুন৷

{
  "name": "My extension",
  ...
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  ...
}

HTML ফাইলের উপর নির্ভর করে এমন ব্যাকগ্রাউন্ড স্ক্রিপ্টের ক্ষেত্রেও একই কথা প্রযোজ্য।

{
  "name": "My extension",
  ...
  "background": {
    "page": "background.html",
    "persistent": false
  },
  ...
}

সারফেস ইভেন্ট শ্রোতা

কোনো গুরুত্বপূর্ণ ইভেন্ট ট্রিগার হলে পটভূমির স্ক্রিপ্ট সক্রিয় করতে শ্রোতাদের অবশ্যই শীর্ষ-স্তরে থাকতে হবে। নিবন্ধিত শ্রোতাদের একটি সিঙ্ক্রোনাস প্যাটার্নে পুনর্গঠন করতে হতে পারে। নিচের মত স্ট্রাকচারিং শ্রোতারা তাদের আহ্বান করার অনুমতি দেবে না কারণ তারা সিঙ্ক্রোনাসভাবে নিবন্ধিত নয়।

chrome.storage.local.get('runtimeEvents', function (events) {
  for (let event of events)
    chrome.runtime[event].addListener(listener);
});

পরিবর্তে, শ্রোতাদের টপ-লেভেল এবং আননেস্টেড রাখুন।

chrome.runtime.onStartup.addListener(function() {
  // run startup function
})

সঞ্চয়স্থানে অবস্থার পরিবর্তন রেকর্ড করুন

স্টেট এবং মান সেট করতে এবং ফেরত দিতে স্টোরেজ API ব্যবহার করুন। স্থানীয় মেশিনে আপডেট করতে local.set ব্যবহার করুন।

  chrome.storage.local.set({ variable: variableInformation });

যে ভেরিয়েবলের মান ধরতে local.get ব্যবহার করুন।

chrome.storage.local.get(['variable'], function(result) {
  let awesomeVariable = result.variable;
  // Do something with awesomeVariable
});

টাইমারকে অ্যালার্মে রূপান্তর করুন

DOM-ভিত্তিক টাইমার, যেমন window.setTimeout() বা window.setInterval() , যদি ইভেন্ট পৃষ্ঠাটি নিষ্ক্রিয় থাকে তখন তারা ট্রিগার করলে অ-স্থির পটভূমি স্ক্রিপ্টগুলিতে সম্মানিত হয় না।

let timeout = 1000 * 60 * 3;  // 3 minutes in milliseconds
window.setTimeout(function() {
  alert('Hello, world!');
}, timeout);

পরিবর্তে, অ্যালার্ম API ব্যবহার করুন।

chrome.alarms.create({delayInMinutes: 3.0})

তারপর একজন শ্রোতা যোগ করুন।

chrome.alarms.onAlarm.addListener(function() {
  alert("Hello, world!")
});

পটভূমি স্ক্রিপ্ট ফাংশন জন্য কল আপডেট

ব্যাকগ্রাউন্ড পৃষ্ঠা থেকে একটি ফাংশন কল করার জন্য extension.getBackgroundPage ব্যবহার করলে, runtime.getBackgroundPage এ আপডেট করুন। নতুন পদ্ধতিটি ফিরে আসার আগে অ-স্থির স্ক্রিপ্ট সক্রিয় করে।

function backgroundFunction() {
  alert('Background, reporting for duty!')
}
document.getElementById('target').addEventListener('click', function(){
  chrome.extension.getBackgroundPage().backgroundFunction();
});

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

document.getElementById('target').addEventListener('click', function() {
  chrome.runtime.getBackgroundPage(function(backgroundPage){
    backgroundPage.backgroundFunction()
  })
});