বর্ণনা
ব্যবহারকারী স্ক্রিপ্ট প্রসঙ্গে ব্যবহারকারীর স্ক্রিপ্ট চালানোর জন্য userScripts
API ব্যবহার করুন।
অনুমতি
userScripts
User Scripts API, chrome.userScripts
ব্যবহার করতে, আপনার manifest.json-এ "userScripts"
অনুমতি যোগ করুন এবং আপনি যে সাইটগুলিতে স্ক্রিপ্ট চালাতে চান তার জন্য "host_permissions"
যোগ করুন৷
{
"name": "User script test extension",
"manifest_version": 3,
"minimum_chrome_version": "120",
"permissions": [
"userScripts"
],
"host_permissions": [
"*://example.com/*"
]
}
প্রাপ্যতা
ধারণা এবং ব্যবহার
একটি ব্যবহারকারীর স্ক্রিপ্ট হল কোডের একটি স্নিপেট যা একটি ওয়েব পৃষ্ঠার চেহারা বা আচরণ পরিবর্তন করতে ইনজেক্ট করা হয়। অন্যান্য এক্সটেনশন বৈশিষ্ট্যের বিপরীতে, যেমন বিষয়বস্তু স্ক্রিপ্ট এবং chrome.scripting
API , User Scripts API আপনাকে নির্বিচারে কোড চালাতে দেয়৷ এই APIটি এমন এক্সটেনশনগুলির জন্য প্রয়োজন যা ব্যবহারকারীর দ্বারা প্রদত্ত স্ক্রিপ্টগুলি চালায় যা আপনার এক্সটেনশন প্যাকেজের অংশ হিসাবে পাঠানো যাবে না৷
এক্সটেনশন ব্যবহারকারীদের জন্য বিকাশকারী মোড
একজন এক্সটেনশন ডেভেলপার হিসেবে, আপনি ইতিমধ্যেই আপনার Chrome-এর ইনস্টলেশনে বিকাশকারী মোড সক্ষম করেছেন৷ ব্যবহারকারীর স্ক্রিপ্ট এক্সটেনশনের জন্য, আপনার ব্যবহারকারীদেরও বিকাশকারী মোড সক্ষম করতে হবে। এখানে নির্দেশাবলী রয়েছে যা আপনি নিজের ডকুমেন্টেশনে কপি এবং পেস্ট করতে পারেন।
- একটি নতুন ট্যাবে
chrome://extensions
লিখে এক্সটেনশন পৃষ্ঠায় যান। (ডিজাইন দ্বারাchrome://
URLগুলি লিঙ্কযোগ্য নয়৷) বিকাশকারী মোডের পাশের টগল সুইচটিতে ক্লিক করে বিকাশকারী মোড সক্ষম করুন৷
এক্সটেনশন পৃষ্ঠা (chrome://extensions)
chrome.userScripts
একটি ত্রুটি নিক্ষেপ করে কিনা তা পরীক্ষা করে আপনি বিকাশকারী মোড সক্ষম করা আছে কিনা তা নির্ধারণ করতে পারেন৷ যেমন:
function isUserScriptsAvailable() {
try {
// Property access which throws if developer mode is not enabled.
chrome.userScripts;
return true;
} catch {
// Not available.
return false;
}
}
বিচ্ছিন্ন বিশ্বে কাজ করুন
ব্যবহারকারী এবং বিষয়বস্তু স্ক্রিপ্ট উভয়ই একটি বিচ্ছিন্ন বিশ্বে বা মূল বিশ্বে চলতে পারে। একটি বিচ্ছিন্ন বিশ্ব হল একটি কার্যকর পরিবেশ যা হোস্ট পৃষ্ঠা বা অন্যান্য এক্সটেনশনগুলিতে অ্যাক্সেসযোগ্য নয়৷ এটি একটি ব্যবহারকারী স্ক্রিপ্টকে হোস্ট পৃষ্ঠা বা অন্যান্য এক্সটেনশনের ব্যবহারকারী এবং বিষয়বস্তু স্ক্রিপ্টগুলিকে প্রভাবিত না করে তার জাভাস্ক্রিপ্ট পরিবেশ পরিবর্তন করতে দেয়৷ বিপরীতভাবে, ব্যবহারকারীর স্ক্রিপ্ট (এবং বিষয়বস্তু স্ক্রিপ্ট) হোস্ট পৃষ্ঠা বা অন্যান্য এক্সটেনশনের ব্যবহারকারী এবং বিষয়বস্তু স্ক্রিপ্টের কাছে দৃশ্যমান নয়। মূল বিশ্বে চলমান স্ক্রিপ্টগুলি হোস্ট পৃষ্ঠা এবং অন্যান্য এক্সটেনশনগুলিতে অ্যাক্সেসযোগ্য এবং হোস্ট পৃষ্ঠাগুলি এবং অন্যান্য এক্সটেনশনগুলিতে দৃশ্যমান৷ বিশ্ব নির্বাচন করতে, userScripts.register()
কল করার সময় "USER_SCRIPT"
বা "MAIN"
পাস করুন।
USER_SCRIPT
বিশ্বের জন্য একটি বিষয়বস্তু নিরাপত্তা নীতি কনফিগার করতে, userScripts.configureWorld()
কল করুন :
chrome.userScripts.configureWorld({
csp: "script-src 'self'"
});
মেসেজিং
বিষয়বস্তু স্ক্রিপ্ট এবং অফস্ক্রিন নথিগুলির মতো, ব্যবহারকারীর স্ক্রিপ্টগুলি মেসেজিং ব্যবহার করে একটি এক্সটেনশনের অন্যান্য অংশের সাথে যোগাযোগ করে (অর্থাৎ তারা runtime.sendMessage()
এবং runtime.connect()
একটি এক্সটেনশনের অন্য অংশ হিসাবে কল করতে পারে)। যাইহোক, তারা ডেডিকেটেড ইভেন্ট হ্যান্ডলার ব্যবহার করে প্রাপ্ত হয় (অর্থাৎ, তারা onMessage
বা onConnect
ব্যবহার করে না)। এই হ্যান্ডলারদের বলা হয় runtime.onUserScriptMessage
এবং runtime.onUserScriptConnect
। ডেডিকেটেড হ্যান্ডলারগুলি ব্যবহারকারীর স্ক্রিপ্ট থেকে বার্তাগুলি সনাক্ত করা সহজ করে তোলে, যা একটি কম বিশ্বস্ত প্রসঙ্গ।
একটি বার্তা পাঠানোর আগে, আপনাকে অবশ্যই configureWorld()
কল করতে হবে messaging
আর্গুমেন্ট true
সেট করে। মনে রাখবেন যে csp
এবং messaging
উভয় আর্গুমেন্ট একই সময়ে পাস করা যেতে পারে।
chrome.userScripts.configureWorld({
messaging: true
});
এক্সটেনশন আপডেট
যখন একটি এক্সটেনশন আপডেট হয় তখন ব্যবহারকারীর স্ক্রিপ্টগুলি সাফ করা হয়৷ আপনি এক্সটেনশন পরিষেবা কর্মীর runtime.onInstalled
ইভেন্ট হ্যান্ডলারে কোড চালিয়ে সেগুলিকে আবার যোগ করতে পারেন৷ শুধুমাত্র ইভেন্ট কলব্যাকে পাস করা "update"
কারণের উত্তর দিন।
উদাহরণ
এই উদাহরণটি আমাদের নমুনা সংগ্রহস্থলের ইউজারস্ক্রিপ্ট নমুনা থেকে।
একটি স্ক্রিপ্ট নিবন্ধন করুন
নিম্নলিখিত উদাহরণটি register()
জন্য একটি মৌলিক কল দেখায়। প্রথম আর্গুমেন্ট হল অবজেক্টের একটি অ্যারে যা রেজিস্টার করা স্ক্রিপ্টগুলিকে সংজ্ঞায়িত করে। এখানে দেখানোর চেয়ে আরও বেশি বিকল্প রয়েছে।
chrome.userScripts.register([{
id: 'test',
matches: ['*://*/*'],
js: [{code: 'alert("Hi!")'}]
}]);
প্রকারভেদ
ExecutionWorld
একটি ব্যবহারকারী স্ক্রিপ্টের মধ্যে চালানোর জন্য জাভাস্ক্রিপ্ট বিশ্ব।
এনাম
"প্রধান" "USER_SCRIPT"
DOM-এর এক্সিকিউশন এনভায়রনমেন্ট নির্দিষ্ট করে, যা হোস্ট পেজের জাভাস্ক্রিপ্টের সাথে শেয়ার করা এক্সিকিউশন এনভায়রনমেন্ট।
এক্সিকিউশন এনভায়রনমেন্ট নির্দিষ্ট করে যা ব্যবহারকারীর স্ক্রিপ্টের জন্য নির্দিষ্ট এবং পৃষ্ঠার CSP থেকে মুক্ত।
InjectionResult
বৈশিষ্ট্য
- ডকুমেন্ট আইডি
স্ট্রিং
ইনজেকশনের সাথে যুক্ত নথি।
- ত্রুটি
স্ট্রিং ঐচ্ছিক
ত্রুটি, যদি থাকে।
error
এবংresult
পারস্পরিক একচেটিয়া। - ফ্রেমআইডি
সংখ্যা
ইনজেকশনের সাথে যুক্ত ফ্রেম।
- ফলাফল
যে কোন ঐচ্ছিক
স্ক্রিপ্ট সম্পাদনের ফলাফল।
InjectionTarget
বৈশিষ্ট্য
- সব ফ্রেম
বুলিয়ান ঐচ্ছিক
ট্যাবের মধ্যে সমস্ত ফ্রেমে স্ক্রিপ্ট ইনজেক্ট করা উচিত কিনা। ডিফল্ট থেকে মিথ্যা.
frameIds
নির্দিষ্ট করা থাকলে এটি অবশ্যই সত্য হবে না। - ডকুমেন্ট আইডি
স্ট্রিং[] ঐচ্ছিক
নির্দিষ্ট ডকুমেন্ট আইডিগুলির আইডিগুলি যাতে ইনজেক্ট করতে হয়৷
frameIds
সেট করা থাকলে এটি অবশ্যই সেট করা উচিত নয়। - ফ্রেমআইডি
সংখ্যা[] ঐচ্ছিক
নির্দিষ্ট ফ্রেমের আইডিগুলি যাতে ইনজেক্ট করতে হয়৷
- ট্যাবআইডি
সংখ্যা
যে ট্যাবে ইনজেকশন দিতে হবে তার আইডি।
RegisteredUserScript
বৈশিষ্ট্য
- সব ফ্রেম
বুলিয়ান ঐচ্ছিক
যদি সত্য হয়, এটি সমস্ত ফ্রেমে ইনজেক্ট করবে, এমনকি ফ্রেমটি ট্যাবের সবচেয়ে শীর্ষে থাকা ফ্রেম না হলেও। প্রতিটি ফ্রেম ইউআরএল প্রয়োজনীয়তার জন্য স্বাধীনভাবে চেক করা হয়; ইউআরএল প্রয়োজনীয়তা পূরণ না হলে এটি চাইল্ড ফ্রেমে প্রবেশ করাবে না। ডিফল্ট থেকে মিথ্যা, মানে শুধুমাত্র উপরের ফ্রেমটি মিলেছে।
- গ্লবস বাদ দিন
স্ট্রিং[] ঐচ্ছিক
পৃষ্ঠাগুলির জন্য ওয়াইল্ডকার্ড প্যাটার্ন নির্দিষ্ট করে এই ব্যবহারকারী স্ক্রিপ্টটি ইনজেক্ট করা হবে না৷
- ম্যাচ বাদ দিন
স্ট্রিং[] ঐচ্ছিক
এই ব্যবহারকারী স্ক্রিপ্ট অন্যথায় ইনজেক্ট করা হবে যে পৃষ্ঠাগুলি বাদ দেয়। এই স্ট্রিংগুলির সিনট্যাক্স সম্পর্কে আরও বিস্তারিত জানার জন্য ম্যাচ প্যাটার্নস দেখুন।
- আইডি
স্ট্রিং
API কলে নির্দিষ্ট করা ব্যবহারকারী স্ক্রিপ্টের ID। এই বৈশিষ্ট্যটি '_' দিয়ে শুরু হওয়া উচিত নয় কারণ এটি তৈরি করা স্ক্রিপ্ট আইডিগুলির জন্য একটি উপসর্গ হিসাবে সংরক্ষিত।
- গ্লবস অন্তর্ভুক্ত
স্ট্রিং[] ঐচ্ছিক
এই ব্যবহারকারী স্ক্রিপ্টটি ইনজেকশন করা হবে এমন পৃষ্ঠাগুলির জন্য ওয়াইল্ডকার্ড প্যাটার্ন নির্দিষ্ট করে৷
- জেএস
স্ক্রিপ্টসোর্স [] ঐচ্ছিক
স্ক্রিপ্টসোর্স অবজেক্টের তালিকা যা স্ক্রিপ্টের উত্সগুলিকে সংজ্ঞায়িত করে যা মিলিত পৃষ্ঠাগুলিতে ইনজেক্ট করা হবে৷ এই বৈশিষ্ট্যটি অবশ্যই ${ref:register}-এর জন্য নির্দিষ্ট করা উচিত, এবং যখন নির্দিষ্ট করা হবে তখন এটি একটি অ-খালি অ্যারে হতে হবে।
- মেলে
স্ট্রিং[] ঐচ্ছিক
এই ব্যবহারকারী স্ক্রিপ্টটি কোন পৃষ্ঠাগুলিতে ইনজেকশন করা হবে তা নির্দিষ্ট করে৷ এই স্ট্রিংগুলির সিনট্যাক্স সম্পর্কে আরও বিস্তারিত জানার জন্য ম্যাচ প্যাটার্নস দেখুন। এই সম্পত্তি অবশ্যই ${ref:register}-এর জন্য নির্দিষ্ট করতে হবে।
- রানআট
RunAt ঐচ্ছিক
জাভাস্ক্রিপ্ট ফাইলগুলি কখন ওয়েব পৃষ্ঠাতে প্রবেশ করানো হয় তা নির্দিষ্ট করে৷ পছন্দের এবং ডিফল্ট মান হল
document_idle
। - বিশ্ব
ExecutionWorld ঐচ্ছিক
স্ক্রিপ্ট চালানোর জন্য জাভাস্ক্রিপ্ট এক্সিকিউশন এনভায়রনমেন্ট। ডিফল্ট হল
`USER_SCRIPT`
। - বিশ্বআইডি
স্ট্রিং ঐচ্ছিক
Chrome 133+এক্সিকিউট করার জন্য ইউজার স্ক্রিপ্ট ওয়ার্ল্ড আইডি নির্দিষ্ট করে। যদি বাদ দেওয়া হয়, স্ক্রিপ্টটি ডিফল্ট ইউজার স্ক্রিপ্ট ওয়ার্ল্ডে এক্সিকিউট হবে। শুধুমাত্র
world
বাদ দিলে বাUSER_SCRIPT
হলেই বৈধ। অগ্রণী আন্ডারস্কোর (_
) সহ মানগুলি সংরক্ষিত।
ScriptSource
বৈশিষ্ট্য
- কোড
স্ট্রিং ঐচ্ছিক
ইনজেক্ট করার জন্য জাভাস্ক্রিপ্ট কোড ধারণকারী একটি স্ট্রিং। সঠিকভাবে
file
বাcode
একটি নির্দিষ্ট করা আবশ্যক। - ফাইল
স্ট্রিং ঐচ্ছিক
এক্সটেনশনের রুট ডিরেক্টরির সাথে সম্পর্কিত জাভাস্ক্রিপ্ট ফাইলের পাথ ইনজেকশনের জন্য। সঠিকভাবে
file
বাcode
একটি নির্দিষ্ট করা আবশ্যক।
UserScriptFilter
বৈশিষ্ট্য
- আইডি
স্ট্রিং[] ঐচ্ছিক
getScripts
শুধুমাত্র এই তালিকায় নির্দিষ্ট আইডি সহ স্ক্রিপ্ট প্রদান করে।
UserScriptInjection
বৈশিষ্ট্য
- অবিলম্বে ইনজেকশন
বুলিয়ান ঐচ্ছিক
ইনজেকশন যত তাড়াতাড়ি সম্ভব লক্ষ্যে ট্রিগার করা উচিত কিনা। মনে রাখবেন যে এটি একটি গ্যারান্টি নয় যে পৃষ্ঠা লোডের আগে ইনজেকশন ঘটবে, কারণ স্ক্রিপ্টটি লক্ষ্যে পৌঁছানোর সময় পৃষ্ঠাটি ইতিমধ্যে লোড হয়ে থাকতে পারে।
- জেএস
স্ক্রিপ্ট সোর্স অবজেক্টের তালিকা যা স্ক্রিপ্টের উৎসগুলিকে লক্ষ্যে প্রবেশ করানো হবে।
- লক্ষ্য
স্ক্রিপ্টটি ইনজেকশনের লক্ষ্যমাত্রা নির্দিষ্ট করে বিশদ বিবরণ।
- বিশ্ব
ExecutionWorld ঐচ্ছিক
স্ক্রিপ্ট চালানোর জন্য জাভাস্ক্রিপ্ট "ওয়ার্ল্ড"। ডিফল্ট হল
USER_SCRIPT
। - বিশ্বআইডি
স্ট্রিং ঐচ্ছিক
এক্সিকিউট করার জন্য ইউজার স্ক্রিপ্ট ওয়ার্ল্ড আইডি নির্দিষ্ট করে। যদি বাদ দেওয়া হয়, স্ক্রিপ্টটি ডিফল্ট ইউজার স্ক্রিপ্ট ওয়ার্ল্ডে এক্সিকিউট হবে। শুধুমাত্র
world
বাদ দিলে বাUSER_SCRIPT
হলেই বৈধ। অগ্রণী আন্ডারস্কোর (_
) সহ মানগুলি সংরক্ষিত।
WorldProperties
বৈশিষ্ট্য
- csp
স্ট্রিং ঐচ্ছিক
বিশ্ব সিএসপি নির্দিষ্ট করে। ডিফল্ট হল
`ISOLATED`
ওয়ার্ল্ড সিএসপি। - মেসেজিং
বুলিয়ান ঐচ্ছিক
মেসেজিং এপিআই প্রকাশ করা হয়েছে কিনা তা নির্দিষ্ট করে। ডিফল্ট
false
. - বিশ্বআইডি
স্ট্রিং ঐচ্ছিক
Chrome 133+আপডেট করার জন্য নির্দিষ্ট ব্যবহারকারীর স্ক্রিপ্ট জগতের আইডি উল্লেখ করে। প্রদান করা না হলে, ডিফল্ট ব্যবহারকারী স্ক্রিপ্ট বিশ্বের বৈশিষ্ট্য আপডেট করে। অগ্রণী আন্ডারস্কোর (
_
) সহ মানগুলি সংরক্ষিত।
পদ্ধতি
configureWorld()
chrome.userScripts.configureWorld(
properties: WorldProperties,
callback?: function,
)
`USER_SCRIPT`
এক্সিকিউশন এনভায়রনমেন্ট কনফিগার করে।
পরামিতি
- বৈশিষ্ট্য
ব্যবহারকারীর স্ক্রিপ্ট বিশ্ব কনফিগারেশন ধারণ করে।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
execute()
chrome.userScripts.execute(
injection: UserScriptInjection,
callback?: function,
)
একটি টার্গেট প্রসঙ্গে একটি স্ক্রিপ্ট ইনজেক্ট করে। ডিফল্টরূপে, স্ক্রিপ্টটি document_idle
এ চালানো হবে, অথবা যদি পৃষ্ঠাটি ইতিমধ্যেই লোড হয়ে থাকে। injectImmediately
প্রপার্টি সেট করা থাকলে, পৃষ্ঠাটি লোড করা শেষ না হলেও স্ক্রিপ্টটি অপেক্ষা না করেই ইনজেক্ট করবে। যদি স্ক্রিপ্ট একটি প্রতিশ্রুতি মূল্যায়ন করে, ব্রাউজার প্রতিশ্রুতি নিষ্পত্তির জন্য অপেক্ষা করবে এবং ফলস্বরূপ মান ফেরত দেবে।
পরামিতি
- ইনজেকশন
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(result: InjectionResult[]) => void
- ফলাফল
রিটার্নস
প্রতিশ্রুতি< ইনজেকশনের ফলাফল []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
getScripts()
chrome.userScripts.getScripts(
filter?: UserScriptFilter,
callback?: function,
)
এই এক্সটেনশনের জন্য সমস্ত গতিশীল-নিবন্ধিত ব্যবহারকারী স্ক্রিপ্ট ফেরত দেয়।
পরামিতি
- ফিল্টার
UserScriptFilter ঐচ্ছিক
নির্দিষ্ট করা থাকলে, এই পদ্ধতিটি শুধুমাত্র ব্যবহারকারীর স্ক্রিপ্টগুলি প্রদান করে যা এর সাথে মেলে।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(scripts: RegisteredUserScript[]) => void
- স্ক্রিপ্ট
রিটার্নস
প্রতিশ্রুতি< RegisteredUserScript []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
getWorldConfigurations()
chrome.userScripts.getWorldConfigurations(
callback?: function,
)
সমস্ত নিবন্ধিত বিশ্ব কনফিগারেশন পুনরুদ্ধার করে।
পরামিতি
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(worlds: WorldProperties[]) => void
- পৃথিবী
বিশ্বসম্পদ []
রিটার্নস
প্রতিশ্রুতি < বিশ্বসম্পদ []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
register()
chrome.userScripts.register(
scripts: RegisteredUserScript[],
callback?: function,
)
এই এক্সটেনশনের জন্য এক বা একাধিক ব্যবহারকারী স্ক্রিপ্ট নিবন্ধন করে।
পরামিতি
- স্ক্রিপ্ট
নিবন্ধিত করার জন্য ব্যবহারকারীর স্ক্রিপ্টগুলির একটি তালিকা রয়েছে৷
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
resetWorldConfiguration()
chrome.userScripts.resetWorldConfiguration(
worldId?: string,
callback?: function,
)
একটি ব্যবহারকারী স্ক্রিপ্ট বিশ্বের জন্য কনফিগারেশন পুনরায় সেট করুন. যে কোনো স্ক্রিপ্ট যা নির্দিষ্ট আইডি দিয়ে বিশ্বে প্রবেশ করে তা ডিফল্ট বিশ্ব কনফিগারেশন ব্যবহার করবে।
পরামিতি
- বিশ্বআইডি
স্ট্রিং ঐচ্ছিক
ব্যবহারকারীর স্ক্রিপ্ট জগতের আইডি রিসেট করতে হবে। যদি বাদ দেওয়া হয়, ডিফল্ট বিশ্বের কনফিগারেশন রিসেট করে।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
unregister()
chrome.userScripts.unregister(
filter?: UserScriptFilter,
callback?: function,
)
এই এক্সটেনশনের জন্য সমস্ত গতিশীল-নিবন্ধিত ব্যবহারকারী স্ক্রিপ্টগুলি নিবন্ধনমুক্ত করে৷
পরামিতি
- ফিল্টার
UserScriptFilter ঐচ্ছিক
নির্দিষ্ট করা থাকলে, এই পদ্ধতিটি শুধুমাত্র ব্যবহারকারীর স্ক্রিপ্টগুলিকে নিবন্ধনমুক্ত করে যা এর সাথে মেলে।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
update()
chrome.userScripts.update(
scripts: RegisteredUserScript[],
callback?: function,
)
এই এক্সটেনশনের জন্য এক বা একাধিক ব্যবহারকারীর স্ক্রিপ্ট আপডেট করে।
পরামিতি
- স্ক্রিপ্ট
আপডেট করার জন্য ব্যবহারকারীর স্ক্রিপ্টগুলির একটি তালিকা রয়েছে৷ একটি সম্পত্তি শুধুমাত্র বিদ্যমান স্ক্রিপ্টের জন্য আপডেট করা হয় যদি এটি এই বস্তুতে নির্দিষ্ট করা থাকে। যদি স্ক্রিপ্ট পার্সিং/ফাইল যাচাইকরণের সময় ত্রুটি থাকে, অথবা যদি নির্দিষ্ট করা আইডিগুলি সম্পূর্ণ নিবন্ধিত স্ক্রিপ্টের সাথে সঙ্গতিপূর্ণ না হয়, তাহলে কোনো স্ক্রিপ্ট আপডেট করা হয় না।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
বর্ণনা
ব্যবহারকারী স্ক্রিপ্ট প্রসঙ্গে ব্যবহারকারীর স্ক্রিপ্ট চালানোর জন্য userScripts
API ব্যবহার করুন।
অনুমতি
userScripts
User Scripts API, chrome.userScripts
ব্যবহার করতে, আপনার manifest.json-এ "userScripts"
অনুমতি যোগ করুন এবং আপনি যে সাইটগুলিতে স্ক্রিপ্ট চালাতে চান তার জন্য "host_permissions"
যোগ করুন৷
{
"name": "User script test extension",
"manifest_version": 3,
"minimum_chrome_version": "120",
"permissions": [
"userScripts"
],
"host_permissions": [
"*://example.com/*"
]
}
প্রাপ্যতা
ধারণা এবং ব্যবহার
একটি ব্যবহারকারীর স্ক্রিপ্ট হল কোডের একটি স্নিপেট যা একটি ওয়েব পৃষ্ঠার চেহারা বা আচরণ পরিবর্তন করতে ইনজেক্ট করা হয়। অন্যান্য এক্সটেনশন বৈশিষ্ট্যের বিপরীতে, যেমন বিষয়বস্তু স্ক্রিপ্ট এবং chrome.scripting
API , User Scripts API আপনাকে নির্বিচারে কোড চালাতে দেয়৷ এই APIটি এমন এক্সটেনশনগুলির জন্য প্রয়োজন যা ব্যবহারকারীর দ্বারা প্রদত্ত স্ক্রিপ্টগুলি চালায় যা আপনার এক্সটেনশন প্যাকেজের অংশ হিসাবে পাঠানো যাবে না৷
এক্সটেনশন ব্যবহারকারীদের জন্য বিকাশকারী মোড
একজন এক্সটেনশন ডেভেলপার হিসেবে, আপনি ইতিমধ্যেই আপনার Chrome-এর ইনস্টলেশনে বিকাশকারী মোড সক্ষম করেছেন৷ ব্যবহারকারীর স্ক্রিপ্ট এক্সটেনশনের জন্য, আপনার ব্যবহারকারীদেরও বিকাশকারী মোড সক্ষম করতে হবে। এখানে নির্দেশাবলী রয়েছে যা আপনি নিজের ডকুমেন্টেশনে কপি এবং পেস্ট করতে পারেন।
- একটি নতুন ট্যাবে
chrome://extensions
লিখে এক্সটেনশন পৃষ্ঠায় যান। (ডিজাইন দ্বারাchrome://
URLগুলি লিঙ্কযোগ্য নয়৷) বিকাশকারী মোডের পাশের টগল সুইচটিতে ক্লিক করে বিকাশকারী মোড সক্ষম করুন৷
এক্সটেনশন পৃষ্ঠা (chrome://extensions)
chrome.userScripts
একটি ত্রুটি নিক্ষেপ করে কিনা তা পরীক্ষা করে আপনি বিকাশকারী মোড সক্ষম করা আছে কিনা তা নির্ধারণ করতে পারেন৷ যেমন:
function isUserScriptsAvailable() {
try {
// Property access which throws if developer mode is not enabled.
chrome.userScripts;
return true;
} catch {
// Not available.
return false;
}
}
বিচ্ছিন্ন বিশ্বে কাজ করুন
ব্যবহারকারী এবং বিষয়বস্তু স্ক্রিপ্ট উভয়ই একটি বিচ্ছিন্ন বিশ্বে বা মূল বিশ্বে চলতে পারে। একটি বিচ্ছিন্ন বিশ্ব হল একটি কার্যকর পরিবেশ যা হোস্ট পৃষ্ঠা বা অন্যান্য এক্সটেনশনগুলিতে অ্যাক্সেসযোগ্য নয়৷ এটি একটি ব্যবহারকারী স্ক্রিপ্টকে হোস্ট পৃষ্ঠা বা অন্যান্য এক্সটেনশনের ব্যবহারকারী এবং বিষয়বস্তু স্ক্রিপ্টগুলিকে প্রভাবিত না করে তার জাভাস্ক্রিপ্ট পরিবেশ পরিবর্তন করতে দেয়৷ বিপরীতভাবে, ব্যবহারকারীর স্ক্রিপ্ট (এবং বিষয়বস্তু স্ক্রিপ্ট) হোস্ট পৃষ্ঠা বা অন্যান্য এক্সটেনশনের ব্যবহারকারী এবং বিষয়বস্তু স্ক্রিপ্টের কাছে দৃশ্যমান নয়। মূল বিশ্বে চলমান স্ক্রিপ্টগুলি হোস্ট পৃষ্ঠা এবং অন্যান্য এক্সটেনশনগুলিতে অ্যাক্সেসযোগ্য এবং হোস্ট পৃষ্ঠাগুলি এবং অন্যান্য এক্সটেনশনগুলিতে দৃশ্যমান৷ বিশ্ব নির্বাচন করতে, userScripts.register()
কল করার সময় "USER_SCRIPT"
বা "MAIN"
পাস করুন।
USER_SCRIPT
বিশ্বের জন্য একটি বিষয়বস্তু নিরাপত্তা নীতি কনফিগার করতে, userScripts.configureWorld()
কল করুন :
chrome.userScripts.configureWorld({
csp: "script-src 'self'"
});
মেসেজিং
বিষয়বস্তু স্ক্রিপ্ট এবং অফস্ক্রিন নথিগুলির মতো, ব্যবহারকারীর স্ক্রিপ্টগুলি মেসেজিং ব্যবহার করে একটি এক্সটেনশনের অন্যান্য অংশের সাথে যোগাযোগ করে (অর্থাৎ তারা runtime.sendMessage()
এবং runtime.connect()
একটি এক্সটেনশনের অন্য অংশ হিসাবে কল করতে পারে)। যাইহোক, তারা ডেডিকেটেড ইভেন্ট হ্যান্ডলার ব্যবহার করে প্রাপ্ত হয় (অর্থাৎ, তারা onMessage
বা onConnect
ব্যবহার করে না)। এই হ্যান্ডলারদের বলা হয় runtime.onUserScriptMessage
এবং runtime.onUserScriptConnect
। ডেডিকেটেড হ্যান্ডলারগুলি ব্যবহারকারীর স্ক্রিপ্ট থেকে বার্তাগুলি সনাক্ত করা সহজ করে তোলে, যা একটি কম বিশ্বস্ত প্রসঙ্গ।
একটি বার্তা পাঠানোর আগে, আপনাকে অবশ্যই configureWorld()
কল করতে হবে messaging
আর্গুমেন্ট true
সেট করে। মনে রাখবেন যে csp
এবং messaging
উভয় আর্গুমেন্ট একই সময়ে পাস করা যেতে পারে।
chrome.userScripts.configureWorld({
messaging: true
});
এক্সটেনশন আপডেট
যখন একটি এক্সটেনশন আপডেট হয় তখন ব্যবহারকারীর স্ক্রিপ্টগুলি সাফ করা হয়৷ আপনি এক্সটেনশন পরিষেবা কর্মীর runtime.onInstalled
ইভেন্ট হ্যান্ডলারে কোড চালিয়ে সেগুলিকে আবার যোগ করতে পারেন৷ শুধুমাত্র ইভেন্ট কলব্যাকে পাস করা "update"
কারণের উত্তর দিন।
উদাহরণ
এই উদাহরণটি আমাদের নমুনা সংগ্রহস্থলের ইউজারস্ক্রিপ্ট নমুনা থেকে।
একটি স্ক্রিপ্ট নিবন্ধন করুন
নিম্নলিখিত উদাহরণটি register()
জন্য একটি মৌলিক কল দেখায়। প্রথম আর্গুমেন্ট হল অবজেক্টের একটি অ্যারে যা রেজিস্টার করা স্ক্রিপ্টগুলিকে সংজ্ঞায়িত করে। এখানে দেখানোর চেয়ে আরও বেশি বিকল্প রয়েছে।
chrome.userScripts.register([{
id: 'test',
matches: ['*://*/*'],
js: [{code: 'alert("Hi!")'}]
}]);
প্রকারভেদ
ExecutionWorld
একটি ব্যবহারকারী স্ক্রিপ্টের মধ্যে চালানোর জন্য জাভাস্ক্রিপ্ট বিশ্ব।
এনাম
"প্রধান" "USER_SCRIPT"
DOM-এর এক্সিকিউশন এনভায়রনমেন্ট নির্দিষ্ট করে, যা হোস্ট পেজের জাভাস্ক্রিপ্টের সাথে শেয়ার করা এক্সিকিউশন এনভায়রনমেন্ট।
এক্সিকিউশন এনভায়রনমেন্ট নির্দিষ্ট করে যা ব্যবহারকারীর স্ক্রিপ্টের জন্য নির্দিষ্ট এবং পৃষ্ঠার CSP থেকে মুক্ত।
InjectionResult
বৈশিষ্ট্য
- ডকুমেন্ট আইডি
স্ট্রিং
ইনজেকশনের সাথে যুক্ত নথি।
- ত্রুটি
স্ট্রিং ঐচ্ছিক
ত্রুটি, যদি থাকে।
error
এবংresult
পারস্পরিক একচেটিয়া। - ফ্রেমআইডি
সংখ্যা
ইনজেকশনের সাথে যুক্ত ফ্রেম।
- ফলাফল
যে কোন ঐচ্ছিক
স্ক্রিপ্ট সম্পাদনের ফলাফল।
InjectionTarget
বৈশিষ্ট্য
- সব ফ্রেম
বুলিয়ান ঐচ্ছিক
ট্যাবের মধ্যে সমস্ত ফ্রেমে স্ক্রিপ্ট ইনজেক্ট করা উচিত কিনা। ডিফল্ট থেকে মিথ্যা.
frameIds
নির্দিষ্ট করা থাকলে এটি অবশ্যই সত্য হবে না। - ডকুমেন্ট আইডি
স্ট্রিং[] ঐচ্ছিক
নির্দিষ্ট ডকুমেন্ট আইডিগুলির আইডিগুলি যাতে ইনজেক্ট করতে হয়৷
frameIds
সেট করা থাকলে এটি অবশ্যই সেট করা উচিত নয়। - ফ্রেমআইডি
সংখ্যা[] ঐচ্ছিক
নির্দিষ্ট ফ্রেমের আইডিগুলি যাতে ইনজেক্ট করতে হয়৷
- ট্যাবআইডি
সংখ্যা
যে ট্যাবে ইনজেকশন দিতে হবে তার আইডি।
RegisteredUserScript
বৈশিষ্ট্য
- সব ফ্রেম
বুলিয়ান ঐচ্ছিক
যদি সত্য হয়, এটি সমস্ত ফ্রেমে ইনজেক্ট করবে, এমনকি ফ্রেমটি ট্যাবের সবচেয়ে শীর্ষে থাকা ফ্রেম না হলেও। প্রতিটি ফ্রেম ইউআরএল প্রয়োজনীয়তার জন্য স্বাধীনভাবে চেক করা হয়; ইউআরএল প্রয়োজনীয়তা পূরণ না হলে এটি চাইল্ড ফ্রেমে প্রবেশ করাবে না। ডিফল্ট থেকে মিথ্যা, মানে শুধুমাত্র উপরের ফ্রেমটি মিলেছে।
- গ্লবস বাদ দিন
স্ট্রিং[] ঐচ্ছিক
পৃষ্ঠাগুলির জন্য ওয়াইল্ডকার্ড প্যাটার্ন নির্দিষ্ট করে এই ব্যবহারকারী স্ক্রিপ্টটি ইনজেক্ট করা হবে না৷
- ম্যাচ বাদ দিন
স্ট্রিং[] ঐচ্ছিক
এই ব্যবহারকারী স্ক্রিপ্ট অন্যথায় ইনজেক্ট করা হবে যে পৃষ্ঠাগুলি বাদ দেয়। এই স্ট্রিংগুলির সিনট্যাক্স সম্পর্কে আরও বিস্তারিত জানার জন্য ম্যাচ প্যাটার্নস দেখুন।
- আইডি
স্ট্রিং
API কলে নির্দিষ্ট করা ব্যবহারকারী স্ক্রিপ্টের ID। এই বৈশিষ্ট্যটি '_' দিয়ে শুরু হওয়া উচিত নয় কারণ এটি তৈরি করা স্ক্রিপ্ট আইডিগুলির জন্য একটি উপসর্গ হিসাবে সংরক্ষিত।
- গ্লবস অন্তর্ভুক্ত
স্ট্রিং[] ঐচ্ছিক
এই ব্যবহারকারী স্ক্রিপ্টটি ইনজেকশন করা হবে এমন পৃষ্ঠাগুলির জন্য ওয়াইল্ডকার্ড প্যাটার্ন নির্দিষ্ট করে৷
- জেএস
স্ক্রিপ্টসোর্স [] ঐচ্ছিক
স্ক্রিপ্টসোর্স অবজেক্টের তালিকা যা স্ক্রিপ্টের উত্সগুলিকে সংজ্ঞায়িত করে যা মিলিত পৃষ্ঠাগুলিতে ইনজেক্ট করা হবে৷ এই বৈশিষ্ট্যটি অবশ্যই ${ref:register}-এর জন্য নির্দিষ্ট করা উচিত, এবং যখন নির্দিষ্ট করা হবে তখন এটি একটি অ-খালি অ্যারে হতে হবে।
- মেলে
স্ট্রিং[] ঐচ্ছিক
এই ব্যবহারকারী স্ক্রিপ্টটি কোন পৃষ্ঠাগুলিতে ইনজেকশন করা হবে তা নির্দিষ্ট করে৷ এই স্ট্রিংগুলির সিনট্যাক্স সম্পর্কে আরও বিস্তারিত জানার জন্য ম্যাচ প্যাটার্নস দেখুন। এই সম্পত্তি অবশ্যই ${ref:register}-এর জন্য নির্দিষ্ট করতে হবে।
- রানআট
RunAt ঐচ্ছিক
জাভাস্ক্রিপ্ট ফাইলগুলি কখন ওয়েব পৃষ্ঠাতে প্রবেশ করানো হয় তা নির্দিষ্ট করে৷ পছন্দের এবং ডিফল্ট মান হল
document_idle
। - বিশ্ব
ExecutionWorld ঐচ্ছিক
স্ক্রিপ্ট চালানোর জন্য জাভাস্ক্রিপ্ট এক্সিকিউশন এনভায়রনমেন্ট। ডিফল্ট হল
`USER_SCRIPT`
। - বিশ্বআইডি
স্ট্রিং ঐচ্ছিক
Chrome 133+এক্সিকিউট করার জন্য ইউজার স্ক্রিপ্ট ওয়ার্ল্ড আইডি নির্দিষ্ট করে। যদি বাদ দেওয়া হয়, স্ক্রিপ্টটি ডিফল্ট ইউজার স্ক্রিপ্ট ওয়ার্ল্ডে এক্সিকিউট হবে। শুধুমাত্র
world
বাদ দিলে বাUSER_SCRIPT
হলেই বৈধ। অগ্রণী আন্ডারস্কোর (_
) সহ মানগুলি সংরক্ষিত।
ScriptSource
বৈশিষ্ট্য
- কোড
স্ট্রিং ঐচ্ছিক
ইনজেক্ট করার জন্য জাভাস্ক্রিপ্ট কোড ধারণকারী একটি স্ট্রিং। সঠিকভাবে
file
বাcode
একটি নির্দিষ্ট করা আবশ্যক। - ফাইল
স্ট্রিং ঐচ্ছিক
এক্সটেনশনের রুট ডিরেক্টরির সাথে সম্পর্কিত জাভাস্ক্রিপ্ট ফাইলের পাথ ইনজেকশনের জন্য। সঠিকভাবে
file
বাcode
একটি নির্দিষ্ট করা আবশ্যক।
UserScriptFilter
বৈশিষ্ট্য
- আইডি
স্ট্রিং[] ঐচ্ছিক
getScripts
শুধুমাত্র এই তালিকায় নির্দিষ্ট আইডি সহ স্ক্রিপ্ট প্রদান করে।
UserScriptInjection
বৈশিষ্ট্য
- অবিলম্বে ইনজেকশন
বুলিয়ান ঐচ্ছিক
ইনজেকশন যত তাড়াতাড়ি সম্ভব লক্ষ্যে ট্রিগার করা উচিত কিনা। মনে রাখবেন যে এটি একটি গ্যারান্টি নয় যে পৃষ্ঠা লোডের আগে ইনজেকশন ঘটবে, কারণ স্ক্রিপ্টটি লক্ষ্যে পৌঁছানোর সময় পৃষ্ঠাটি ইতিমধ্যে লোড হয়ে থাকতে পারে।
- জেএস
স্ক্রিপ্ট সোর্স অবজেক্টের তালিকা যা স্ক্রিপ্টের উৎসগুলিকে লক্ষ্যে প্রবেশ করানো হবে।
- লক্ষ্য
স্ক্রিপ্টটি ইনজেকশনের লক্ষ্যমাত্রা নির্দিষ্ট করে বিশদ বিবরণ।
- বিশ্ব
ExecutionWorld ঐচ্ছিক
স্ক্রিপ্ট চালানোর জন্য জাভাস্ক্রিপ্ট "ওয়ার্ল্ড"। ডিফল্ট হল
USER_SCRIPT
। - বিশ্বআইডি
স্ট্রিং ঐচ্ছিক
এক্সিকিউট করার জন্য ইউজার স্ক্রিপ্ট ওয়ার্ল্ড আইডি নির্দিষ্ট করে। যদি বাদ দেওয়া হয়, স্ক্রিপ্টটি ডিফল্ট ইউজার স্ক্রিপ্ট ওয়ার্ল্ডে এক্সিকিউট হবে। শুধুমাত্র
world
বাদ দিলে বাUSER_SCRIPT
হলেই বৈধ। অগ্রণী আন্ডারস্কোর (_
) সহ মানগুলি সংরক্ষিত।
WorldProperties
বৈশিষ্ট্য
- csp
স্ট্রিং ঐচ্ছিক
বিশ্ব সিএসপি নির্দিষ্ট করে। ডিফল্ট হল
`ISOLATED`
ওয়ার্ল্ড সিএসপি। - মেসেজিং
বুলিয়ান ঐচ্ছিক
মেসেজিং এপিআই প্রকাশ করা হয়েছে কিনা তা নির্দিষ্ট করে। ডিফল্ট
false
. - বিশ্বআইডি
স্ট্রিং ঐচ্ছিক
Chrome 133+আপডেট করার জন্য নির্দিষ্ট ব্যবহারকারীর স্ক্রিপ্ট জগতের আইডি উল্লেখ করে। প্রদান করা না হলে, ডিফল্ট ব্যবহারকারী স্ক্রিপ্ট বিশ্বের বৈশিষ্ট্য আপডেট করে। অগ্রণী আন্ডারস্কোর (
_
) সহ মানগুলি সংরক্ষিত।
পদ্ধতি
configureWorld()
chrome.userScripts.configureWorld(
properties: WorldProperties,
callback?: function,
)
`USER_SCRIPT`
এক্সিকিউশন এনভায়রনমেন্ট কনফিগার করে।
পরামিতি
- বৈশিষ্ট্য
ব্যবহারকারীর স্ক্রিপ্ট বিশ্ব কনফিগারেশন ধারণ করে।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
execute()
chrome.userScripts.execute(
injection: UserScriptInjection,
callback?: function,
)
একটি টার্গেট প্রসঙ্গে একটি স্ক্রিপ্ট ইনজেক্ট করে। ডিফল্টরূপে, স্ক্রিপ্টটি document_idle
এ চালানো হবে, অথবা যদি পৃষ্ঠাটি ইতিমধ্যেই লোড হয়ে থাকে। injectImmediately
প্রপার্টি সেট করা থাকলে, পৃষ্ঠাটি লোড করা শেষ না হলেও স্ক্রিপ্টটি অপেক্ষা না করেই ইনজেক্ট করবে। যদি স্ক্রিপ্ট একটি প্রতিশ্রুতি মূল্যায়ন করে, ব্রাউজার প্রতিশ্রুতি নিষ্পত্তির জন্য অপেক্ষা করবে এবং ফলস্বরূপ মান ফেরত দেবে।
পরামিতি
- ইনজেকশন
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(result: InjectionResult[]) => void
- ফলাফল
রিটার্নস
প্রতিশ্রুতি< ইনজেকশনের ফলাফল []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
getScripts()
chrome.userScripts.getScripts(
filter?: UserScriptFilter,
callback?: function,
)
এই এক্সটেনশনের জন্য সমস্ত গতিশীল-নিবন্ধিত ব্যবহারকারী স্ক্রিপ্ট ফেরত দেয়।
পরামিতি
- ফিল্টার
UserScriptFilter ঐচ্ছিক
নির্দিষ্ট করা থাকলে, এই পদ্ধতিটি শুধুমাত্র ব্যবহারকারীর স্ক্রিপ্টগুলি প্রদান করে যা এর সাথে মেলে।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(scripts: RegisteredUserScript[]) => void
- স্ক্রিপ্ট
রিটার্নস
প্রতিশ্রুতি< RegisteredUserScript []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
getWorldConfigurations()
chrome.userScripts.getWorldConfigurations(
callback?: function,
)
সমস্ত নিবন্ধিত বিশ্ব কনফিগারেশন পুনরুদ্ধার করে।
পরামিতি
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(worlds: WorldProperties[]) => void
- পৃথিবী
বিশ্বসম্পদ []
রিটার্নস
প্রতিশ্রুতি < বিশ্বসম্পদ []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
register()
chrome.userScripts.register(
scripts: RegisteredUserScript[],
callback?: function,
)
এই এক্সটেনশনের জন্য এক বা একাধিক ব্যবহারকারী স্ক্রিপ্ট নিবন্ধন করে।
পরামিতি
- স্ক্রিপ্ট
নিবন্ধিত করার জন্য ব্যবহারকারীর স্ক্রিপ্টগুলির একটি তালিকা রয়েছে৷
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
resetWorldConfiguration()
chrome.userScripts.resetWorldConfiguration(
worldId?: string,
callback?: function,
)
একটি ব্যবহারকারী স্ক্রিপ্ট বিশ্বের জন্য কনফিগারেশন পুনরায় সেট করুন. যে কোনো স্ক্রিপ্ট যা নির্দিষ্ট আইডি দিয়ে বিশ্বে প্রবেশ করে তা ডিফল্ট বিশ্ব কনফিগারেশন ব্যবহার করবে।
পরামিতি
- বিশ্বআইডি
স্ট্রিং ঐচ্ছিক
ব্যবহারকারীর স্ক্রিপ্ট জগতের আইডি রিসেট করতে হবে। যদি বাদ দেওয়া হয়, ডিফল্ট বিশ্বের কনফিগারেশন রিসেট করে।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
unregister()
chrome.userScripts.unregister(
filter?: UserScriptFilter,
callback?: function,
)
এই এক্সটেনশনের জন্য সমস্ত গতিশীল-নিবন্ধিত ব্যবহারকারী স্ক্রিপ্টগুলি নিবন্ধনমুক্ত করে৷
পরামিতি
- ফিল্টার
UserScriptFilter ঐচ্ছিক
নির্দিষ্ট করা থাকলে, এই পদ্ধতিটি শুধুমাত্র ব্যবহারকারীর স্ক্রিপ্টগুলিকে নিবন্ধনমুক্ত করে যা এর সাথে মেলে।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
update()
chrome.userScripts.update(
scripts: RegisteredUserScript[],
callback?: function,
)
এই এক্সটেনশনের জন্য এক বা একাধিক ব্যবহারকারীর স্ক্রিপ্ট আপডেট করে।
পরামিতি
- স্ক্রিপ্ট
আপডেট করার জন্য ব্যবহারকারীর স্ক্রিপ্টগুলির একটি তালিকা রয়েছে৷ একটি সম্পত্তি শুধুমাত্র বিদ্যমান স্ক্রিপ্টের জন্য আপডেট করা হয় যদি এটি এই বস্তুতে নির্দিষ্ট করা থাকে। যদি স্ক্রিপ্ট পার্সিং/ফাইল যাচাইকরণের সময় ত্রুটি থাকে, অথবা যদি নির্দিষ্ট করা আইডিগুলি সম্পূর্ণ নিবন্ধিত স্ক্রিপ্টের সাথে সঙ্গতিপূর্ণ না হয়, তাহলে কোনো স্ক্রিপ্ট আপডেট করা হয় না।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
বর্ণনা
ব্যবহারকারী স্ক্রিপ্ট প্রসঙ্গে ব্যবহারকারীর স্ক্রিপ্ট চালানোর জন্য userScripts
API ব্যবহার করুন।
অনুমতি
userScripts
User Scripts API, chrome.userScripts
ব্যবহার করতে, আপনার manifest.json-এ "userScripts"
অনুমতি যোগ করুন এবং আপনি যে সাইটগুলিতে স্ক্রিপ্ট চালাতে চান তার জন্য "host_permissions"
যোগ করুন৷
{
"name": "User script test extension",
"manifest_version": 3,
"minimum_chrome_version": "120",
"permissions": [
"userScripts"
],
"host_permissions": [
"*://example.com/*"
]
}
প্রাপ্যতা
ধারণা এবং ব্যবহার
একটি ব্যবহারকারীর স্ক্রিপ্ট হল কোডের একটি স্নিপেট যা একটি ওয়েব পৃষ্ঠার চেহারা বা আচরণ পরিবর্তন করতে ইনজেক্ট করা হয়। অন্যান্য এক্সটেনশন বৈশিষ্ট্যের বিপরীতে, যেমন বিষয়বস্তু স্ক্রিপ্ট এবং chrome.scripting
API , User Scripts API আপনাকে নির্বিচারে কোড চালাতে দেয়৷ এই APIটি এমন এক্সটেনশনগুলির জন্য প্রয়োজন যা ব্যবহারকারীর দ্বারা প্রদত্ত স্ক্রিপ্টগুলি চালায় যা আপনার এক্সটেনশন প্যাকেজের অংশ হিসাবে পাঠানো যাবে না৷
এক্সটেনশন ব্যবহারকারীদের জন্য বিকাশকারী মোড
একজন এক্সটেনশন ডেভেলপার হিসেবে, আপনি ইতিমধ্যেই আপনার Chrome-এর ইনস্টলেশনে বিকাশকারী মোড সক্ষম করেছেন৷ ব্যবহারকারীর স্ক্রিপ্ট এক্সটেনশনের জন্য, আপনার ব্যবহারকারীদেরও বিকাশকারী মোড সক্ষম করতে হবে। এখানে নির্দেশাবলী রয়েছে যা আপনি নিজের ডকুমেন্টেশনে কপি এবং পেস্ট করতে পারেন।
- একটি নতুন ট্যাবে
chrome://extensions
লিখে এক্সটেনশন পৃষ্ঠায় যান। (ডিজাইন দ্বারাchrome://
URLগুলি লিঙ্কযোগ্য নয়৷) বিকাশকারী মোডের পাশের টগল সুইচটিতে ক্লিক করে বিকাশকারী মোড সক্ষম করুন৷
এক্সটেনশন পৃষ্ঠা (chrome://extensions)
chrome.userScripts
একটি ত্রুটি নিক্ষেপ করে কিনা তা পরীক্ষা করে আপনি বিকাশকারী মোড সক্ষম করা আছে কিনা তা নির্ধারণ করতে পারেন৷ যেমন:
function isUserScriptsAvailable() {
try {
// Property access which throws if developer mode is not enabled.
chrome.userScripts;
return true;
} catch {
// Not available.
return false;
}
}
বিচ্ছিন্ন বিশ্বে কাজ করুন
ব্যবহারকারী এবং বিষয়বস্তু স্ক্রিপ্ট উভয়ই একটি বিচ্ছিন্ন বিশ্বে বা মূল বিশ্বে চলতে পারে। একটি বিচ্ছিন্ন বিশ্ব হল একটি কার্যকর পরিবেশ যা হোস্ট পৃষ্ঠা বা অন্যান্য এক্সটেনশনগুলিতে অ্যাক্সেসযোগ্য নয়৷ এটি একটি ব্যবহারকারী স্ক্রিপ্টকে হোস্ট পৃষ্ঠা বা অন্যান্য এক্সটেনশনের ব্যবহারকারী এবং বিষয়বস্তু স্ক্রিপ্টগুলিকে প্রভাবিত না করে তার জাভাস্ক্রিপ্ট পরিবেশ পরিবর্তন করতে দেয়৷ বিপরীতভাবে, ব্যবহারকারীর স্ক্রিপ্ট (এবং বিষয়বস্তু স্ক্রিপ্ট) হোস্ট পৃষ্ঠা বা অন্যান্য এক্সটেনশনের ব্যবহারকারী এবং বিষয়বস্তু স্ক্রিপ্টের কাছে দৃশ্যমান নয়। মূল বিশ্বে চলমান স্ক্রিপ্টগুলি হোস্ট পৃষ্ঠা এবং অন্যান্য এক্সটেনশনগুলিতে অ্যাক্সেসযোগ্য এবং হোস্ট পৃষ্ঠাগুলি এবং অন্যান্য এক্সটেনশনগুলিতে দৃশ্যমান৷ বিশ্ব নির্বাচন করতে, userScripts.register()
কল করার সময় "USER_SCRIPT"
বা "MAIN"
পাস করুন।
USER_SCRIPT
বিশ্বের জন্য একটি বিষয়বস্তু নিরাপত্তা নীতি কনফিগার করতে, userScripts.configureWorld()
কল করুন :
chrome.userScripts.configureWorld({
csp: "script-src 'self'"
});
মেসেজিং
বিষয়বস্তু স্ক্রিপ্ট এবং অফস্ক্রিন নথিগুলির মতো, ব্যবহারকারীর স্ক্রিপ্টগুলি মেসেজিং ব্যবহার করে একটি এক্সটেনশনের অন্যান্য অংশের সাথে যোগাযোগ করে (অর্থাৎ তারা runtime.sendMessage()
এবং runtime.connect()
একটি এক্সটেনশনের অন্য অংশ হিসাবে কল করতে পারে)। যাইহোক, তারা ডেডিকেটেড ইভেন্ট হ্যান্ডলার ব্যবহার করে প্রাপ্ত হয় (অর্থাৎ, তারা onMessage
বা onConnect
ব্যবহার করে না)। এই হ্যান্ডলারদের বলা হয় runtime.onUserScriptMessage
এবং runtime.onUserScriptConnect
। ডেডিকেটেড হ্যান্ডলারগুলি ব্যবহারকারীর স্ক্রিপ্ট থেকে বার্তাগুলি সনাক্ত করা সহজ করে তোলে, যা একটি কম বিশ্বস্ত প্রসঙ্গ।
একটি বার্তা পাঠানোর আগে, আপনাকে অবশ্যই configureWorld()
কল করতে হবে messaging
আর্গুমেন্ট true
সেট করে। মনে রাখবেন যে csp
এবং messaging
উভয় আর্গুমেন্ট একই সময়ে পাস করা যেতে পারে।
chrome.userScripts.configureWorld({
messaging: true
});
এক্সটেনশন আপডেট
যখন একটি এক্সটেনশন আপডেট হয় তখন ব্যবহারকারীর স্ক্রিপ্টগুলি সাফ করা হয়৷ আপনি এক্সটেনশন পরিষেবা কর্মীর runtime.onInstalled
ইভেন্ট হ্যান্ডলারে কোড চালিয়ে সেগুলিকে আবার যোগ করতে পারেন৷ শুধুমাত্র ইভেন্ট কলব্যাকে পাস করা "update"
কারণের উত্তর দিন।
উদাহরণ
এই উদাহরণটি আমাদের নমুনা সংগ্রহস্থলের ইউজারস্ক্রিপ্ট নমুনা থেকে।
একটি স্ক্রিপ্ট নিবন্ধন করুন
নিম্নলিখিত উদাহরণটি register()
জন্য একটি মৌলিক কল দেখায়। প্রথম আর্গুমেন্ট হল অবজেক্টের একটি অ্যারে যা রেজিস্টার করা স্ক্রিপ্টগুলিকে সংজ্ঞায়িত করে। এখানে দেখানোর চেয়ে আরও বেশি বিকল্প রয়েছে।
chrome.userScripts.register([{
id: 'test',
matches: ['*://*/*'],
js: [{code: 'alert("Hi!")'}]
}]);
প্রকারভেদ
ExecutionWorld
একটি ব্যবহারকারী স্ক্রিপ্টের মধ্যে চালানোর জন্য জাভাস্ক্রিপ্ট বিশ্ব।
এনাম
"প্রধান" "USER_SCRIPT"
DOM-এর এক্সিকিউশন এনভায়রনমেন্ট নির্দিষ্ট করে, যা হোস্ট পেজের জাভাস্ক্রিপ্টের সাথে শেয়ার করা এক্সিকিউশন এনভায়রনমেন্ট।
এক্সিকিউশন এনভায়রনমেন্ট নির্দিষ্ট করে যা ব্যবহারকারীর স্ক্রিপ্টের জন্য নির্দিষ্ট এবং পৃষ্ঠার CSP থেকে মুক্ত।
InjectionResult
বৈশিষ্ট্য
- ডকুমেন্ট আইডি
স্ট্রিং
ইনজেকশনের সাথে যুক্ত নথি।
- ত্রুটি
স্ট্রিং ঐচ্ছিক
ত্রুটি, যদি থাকে।
error
এবংresult
পারস্পরিক একচেটিয়া। - ফ্রেমআইডি
সংখ্যা
ইনজেকশনের সাথে যুক্ত ফ্রেম।
- ফলাফল
যে কোন ঐচ্ছিক
স্ক্রিপ্ট সম্পাদনের ফলাফল।
InjectionTarget
বৈশিষ্ট্য
- সব ফ্রেম
বুলিয়ান ঐচ্ছিক
ট্যাবের মধ্যে সমস্ত ফ্রেমে স্ক্রিপ্ট ইনজেক্ট করা উচিত কিনা। ডিফল্ট থেকে মিথ্যা.
frameIds
নির্দিষ্ট করা থাকলে এটি অবশ্যই সত্য হবে না। - ডকুমেন্ট আইডি
স্ট্রিং[] ঐচ্ছিক
নির্দিষ্ট ডকুমেন্ট আইডিগুলির আইডিগুলি যাতে ইনজেক্ট করতে হয়৷
frameIds
সেট করা থাকলে এটি অবশ্যই সেট করা উচিত নয়। - ফ্রেমআইডি
সংখ্যা[] ঐচ্ছিক
নির্দিষ্ট ফ্রেমের আইডিগুলি যাতে ইনজেক্ট করতে হয়৷
- ট্যাবআইডি
সংখ্যা
যে ট্যাবে ইনজেকশন দিতে হবে তার আইডি।
RegisteredUserScript
বৈশিষ্ট্য
- সব ফ্রেম
বুলিয়ান ঐচ্ছিক
যদি সত্য হয়, এটি সমস্ত ফ্রেমে ইনজেক্ট করবে, এমনকি ফ্রেমটি ট্যাবের সবচেয়ে শীর্ষে থাকা ফ্রেম না হলেও। প্রতিটি ফ্রেম ইউআরএল প্রয়োজনীয়তার জন্য স্বাধীনভাবে চেক করা হয়; ইউআরএল প্রয়োজনীয়তা পূরণ না হলে এটি চাইল্ড ফ্রেমে প্রবেশ করাবে না। ডিফল্ট থেকে মিথ্যা, মানে শুধুমাত্র উপরের ফ্রেমটি মিলেছে।
- গ্লবস বাদ দিন
স্ট্রিং[] ঐচ্ছিক
পৃষ্ঠাগুলির জন্য ওয়াইল্ডকার্ড প্যাটার্ন নির্দিষ্ট করে এই ব্যবহারকারী স্ক্রিপ্টটি ইনজেক্ট করা হবে না৷
- ম্যাচ বাদ দিন
স্ট্রিং[] ঐচ্ছিক
এই ব্যবহারকারী স্ক্রিপ্ট অন্যথায় ইনজেক্ট করা হবে যে পৃষ্ঠাগুলি বাদ দেয়। এই স্ট্রিংগুলির সিনট্যাক্স সম্পর্কে আরও তথ্যের জন্য ম্যাচের নিদর্শনগুলি দেখুন।
- আইডি
স্ট্রিং
এপিআই কলটিতে নির্দিষ্ট করা ব্যবহারকারী স্ক্রিপ্টের আইডি। এই সম্পত্তিটি অবশ্যই '_' দিয়ে শুরু করা উচিত নয় কারণ এটি উত্পন্ন স্ক্রিপ্ট আইডিগুলির জন্য উপসর্গ হিসাবে সংরক্ষিত।
- অন্তর্ভুক্ত
স্ট্রিং[] ঐচ্ছিক
পৃষ্ঠাগুলির জন্য ওয়াইল্ডকার্ড নিদর্শনগুলি নির্দিষ্ট করে এই ব্যবহারকারী স্ক্রিপ্টটি ইনজেকশন দেওয়া হবে।
- জেএস
স্ক্রিপ্টসোর্স [] al চ্ছিক
স্ক্রিপ্টসোর্স অবজেক্টগুলির তালিকা স্ক্রিপ্টগুলির উত্সগুলি ম্যাচিং পৃষ্ঠাগুলিতে ইনজেকশনের জন্য সংজ্ঞায়িত করে। এই সম্পত্তিটি অবশ্যই $ {রেফ: রেজিস্টার} এর জন্য নির্দিষ্ট করা উচিত এবং নির্দিষ্ট করা হলে এটি অবশ্যই একটি খালি অ্যারে হতে হবে।
- মেলে
স্ট্রিং[] ঐচ্ছিক
এই ব্যবহারকারীর স্ক্রিপ্টটি কোন পৃষ্ঠাগুলিতে ইনজেকশন দেওয়া হবে তা নির্দিষ্ট করে। এই স্ট্রিংগুলির সিনট্যাক্স সম্পর্কে আরও তথ্যের জন্য ম্যাচের নিদর্শনগুলি দেখুন। এই সম্পত্তিটি অবশ্যই $ {রেফ: রেজিস্টার} এর জন্য নির্দিষ্ট করা উচিত}
- রানাত
Runat al চ্ছিক
জাভাস্ক্রিপ্ট ফাইলগুলি ওয়েব পৃষ্ঠায় ইনজেকশনের সময় নির্দিষ্ট করে। পছন্দসই এবং ডিফল্ট মানটি
document_idle
। - বিশ্ব
এক্সিকিউশন ওয়ার্ল্ড al চ্ছিক
স্ক্রিপ্টটি চালানোর জন্য জাভাস্ক্রিপ্ট এক্সিকিউশন এনভায়রনমেন্ট Def ডিফল্টটি
`USER_SCRIPT`
- ওয়ার্ল্ডআইডি
স্ট্রিং al চ্ছিক
Chrome 133+কার্যকর করতে ব্যবহারকারী স্ক্রিপ্ট ওয়ার্ল্ড আইডি নির্দিষ্ট করে। যদি বাদ দেওয়া হয় তবে স্ক্রিপ্টটি ডিফল্ট ব্যবহারকারী স্ক্রিপ্ট বিশ্বে কার্যকর করবে। কেবলমাত্র যদি
world
বাদ দেওয়া হয় বাUSER_SCRIPT
হয় তবে বৈধ। শীর্ষস্থানীয় আন্ডারস্কোর (_
) সহ মানগুলি সংরক্ষিত।
ScriptSource
বৈশিষ্ট্য
- কোড
স্ট্রিং al চ্ছিক
ইনজেকশনের জন্য জাভাস্ক্রিপ্ট কোডযুক্ত একটি স্ট্রিং। ঠিক
file
বাcode
মধ্যে একটি অবশ্যই নির্দিষ্ট করতে হবে। - ফাইল
স্ট্রিং al চ্ছিক
এক্সটেনশনের রুট ডিরেক্টরিটির সাথে সম্পর্কিত ইনজেকশনের জন্য জাভাস্ক্রিপ্ট ফাইলের পথ। ঠিক
file
বাcode
মধ্যে একটি অবশ্যই নির্দিষ্ট করতে হবে।
UserScriptFilter
বৈশিষ্ট্য
- আইডি
স্ট্রিং[] ঐচ্ছিক
getScripts
কেবল এই তালিকায় উল্লিখিত আইডিগুলির সাথে স্ক্রিপ্টগুলি ফেরত দেয়।
UserScriptInjection
বৈশিষ্ট্য
- ইনজেকশনমেডি
বুলিয়ান al চ্ছিক
ইনজেকশনটি যত তাড়াতাড়ি সম্ভব লক্ষ্যে ট্রিগার করা উচিত কিনা। নোট করুন যে এটি কোনও গ্যারান্টি নয় যে পৃষ্ঠা লোডের আগে ইনজেকশন ঘটবে, কারণ স্ক্রিপ্টটি লক্ষ্যবস্তুতে পৌঁছানোর সময় পৃষ্ঠাটি ইতিমধ্যে লোড হয়ে থাকতে পারে।
- জেএস
স্ক্রিপ্টসোর্স অবজেক্টগুলির তালিকা স্ক্রিপ্টগুলির উত্সগুলি লক্ষ্য করে ইনজেকশনের জন্য সংজ্ঞায়িত করে।
- লক্ষ্য
স্ক্রিপ্টটি ইনজেক্ট করার জন্য লক্ষ্য নির্দিষ্ট করে বিশদ বিবরণ।
- বিশ্ব
এক্সিকিউশন ওয়ার্ল্ড al চ্ছিক
স্ক্রিপ্টটি চালানোর জন্য জাভাস্ক্রিপ্ট "ওয়ার্ল্ড"। ডিফল্টটি হ'ল
USER_SCRIPT
। - ওয়ার্ল্ডআইডি
স্ট্রিং al চ্ছিক
কার্যকর করতে ব্যবহারকারী স্ক্রিপ্ট ওয়ার্ল্ড আইডি নির্দিষ্ট করে। যদি বাদ দেওয়া হয় তবে স্ক্রিপ্টটি ডিফল্ট ব্যবহারকারী স্ক্রিপ্ট বিশ্বে কার্যকর করবে। কেবলমাত্র যদি
world
বাদ দেওয়া হয় বাUSER_SCRIPT
হয় তবে বৈধ। শীর্ষস্থানীয় আন্ডারস্কোর (_
) সহ মানগুলি সংরক্ষিত।
WorldProperties
বৈশিষ্ট্য
- csp
স্ট্রিং al চ্ছিক
ওয়ার্ল্ড সিএসপি নির্দিষ্ট করে। ডিফল্ট হ'ল
`ISOLATED`
ওয়ার্ল্ড সিএসপি। - মেসেজিং
বুলিয়ান al চ্ছিক
মেসেজিং এপিআই উন্মুক্ত কিনা তা নির্দিষ্ট করে। ডিফল্ট
false
. - ওয়ার্ল্ডআইডি
স্ট্রিং al চ্ছিক
Chrome 133+আপডেট করার জন্য নির্দিষ্ট ব্যবহারকারী স্ক্রিপ্ট বিশ্বের আইডি নির্দিষ্ট করে। যদি সরবরাহ না করা হয় তবে ডিফল্ট ব্যবহারকারী স্ক্রিপ্ট বিশ্বের বৈশিষ্ট্যগুলি আপডেট করে। শীর্ষস্থানীয় আন্ডারস্কোর (
_
) সহ মানগুলি সংরক্ষিত।
পদ্ধতি
configureWorld()
chrome.userScripts.configureWorld(
properties: WorldProperties,
callback?: function,
)
`USER_SCRIPT`
এক্সিকিউশন পরিবেশটি কনফিগার করে।
পরামিতি
- বৈশিষ্ট্য
ব্যবহারকারী স্ক্রিপ্ট ওয়ার্ল্ড কনফিগারেশন রয়েছে।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <শূন্য>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
execute()
chrome.userScripts.execute(
injection: UserScriptInjection,
callback?: function,
)
একটি স্ক্রিপ্ট একটি লক্ষ্য প্রসঙ্গে ইনজেকশন। ডিফল্টরূপে, স্ক্রিপ্টটি document_idle
বা অবিলম্বে পৃষ্ঠাটি ইতিমধ্যে লোড হয়ে গেলে চালিত হবে। যদি injectImmediately
সম্পত্তিটি সেট করা থাকে তবে স্ক্রিপ্টটি অপেক্ষা না করেই ইনজেকশন দেবে, এমনকি পৃষ্ঠাটি লোডিং শেষ না হলেও। যদি স্ক্রিপ্টটি কোনও প্রতিশ্রুতির মূল্যায়ন করে তবে ব্রাউজারটি স্থিতিশীলতার জন্য অপেক্ষা করবে এবং ফলাফলের মানটি ফিরিয়ে দেওয়ার জন্য অপেক্ষা করবে।
পরামিতি
- ইনজেকশন
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:(result: InjectionResult[]) => void
- ফলাফল
রিটার্নস
প্রতিশ্রুতি < ইনজেকশন রিসাল্ট []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
getScripts()
chrome.userScripts.getScripts(
filter?: UserScriptFilter,
callback?: function,
)
এই এক্সটেনশনের জন্য সমস্ত গতিশীল-নিবন্ধিত ব্যবহারকারী স্ক্রিপ্টগুলি প্রদান করে।
পরামিতি
- ফিল্টার
ব্যবহারকারী স্ক্রিপ্টফিল্টার al চ্ছিক
যদি নির্দিষ্ট করা হয় তবে এই পদ্ধতিটি কেবল এটির সাথে মেলে কেবল ব্যবহারকারী স্ক্রিপ্টগুলি ফেরত দেয়।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:(scripts: RegisteredUserScript[]) => void
- স্ক্রিপ্ট
রিটার্নস
প্রতিশ্রুতি < রেজিস্ট্রেডউজারস্ক্রিপ্ট []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
getWorldConfigurations()
chrome.userScripts.getWorldConfigurations(
callback?: function,
)
সমস্ত নিবন্ধিত বিশ্ব কনফিগারেশন পুনরুদ্ধার করে।
পরামিতি
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:(worlds: WorldProperties[]) => void
- পৃথিবী
রিটার্নস
প্রতিশ্রুতি < ওয়ার্ল্ডপ্রোপার্টি []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
register()
chrome.userScripts.register(
scripts: RegisteredUserScript[],
callback?: function,
)
এই এক্সটেনশনের জন্য এক বা একাধিক ব্যবহারকারী স্ক্রিপ্ট নিবন্ধন করে।
পরামিতি
- স্ক্রিপ্ট
নিবন্ধিত হওয়ার জন্য ব্যবহারকারী স্ক্রিপ্টগুলির একটি তালিকা রয়েছে।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <শূন্য>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
resetWorldConfiguration()
chrome.userScripts.resetWorldConfiguration(
worldId?: string,
callback?: function,
)
একটি ব্যবহারকারী স্ক্রিপ্ট বিশ্বের জন্য কনফিগারেশন পুনরায় সেট করুন। নির্দিষ্ট আইডি সহ বিশ্বে ইনজেকশন করা যে কোনও স্ক্রিপ্টগুলি ডিফল্ট ওয়ার্ল্ড কনফিগারেশন ব্যবহার করবে।
পরামিতি
- ওয়ার্ল্ডআইডি
স্ট্রিং al চ্ছিক
ব্যবহারকারী স্ক্রিপ্ট বিশ্বের আইডি পুনরায় সেট করতে। বাদ দেওয়া হলে, ডিফল্ট বিশ্বের কনফিগারেশন পুনরায় সেট করুন।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <শূন্য>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
unregister()
chrome.userScripts.unregister(
filter?: UserScriptFilter,
callback?: function,
)
এই এক্সটেনশনের জন্য সমস্ত গতিশীল-নিবন্ধিত ব্যবহারকারী স্ক্রিপ্টগুলি নিবন্ধভুক্ত করুন।
পরামিতি
- ফিল্টার
ব্যবহারকারী স্ক্রিপ্টফিল্টার al চ্ছিক
যদি নির্দিষ্ট করা হয় তবে এই পদ্ধতিটি কেবল এটির সাথে মেলে কেবল ব্যবহারকারী স্ক্রিপ্টগুলি নিবন্ধভুক্ত করে।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <শূন্য>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
update()
chrome.userScripts.update(
scripts: RegisteredUserScript[],
callback?: function,
)
এই এক্সটেনশনের জন্য এক বা একাধিক ব্যবহারকারী স্ক্রিপ্ট আপডেট করে।
পরামিতি
- স্ক্রিপ্ট
আপডেট করার জন্য ব্যবহারকারী স্ক্রিপ্টগুলির একটি তালিকা রয়েছে। কোনও সম্পত্তি কেবলমাত্র বিদ্যমান স্ক্রিপ্টের জন্য আপডেট করা হয় যদি এটি এই অবজেক্টে নির্দিষ্ট করা থাকে। স্ক্রিপ্ট পার্সিং/ফাইল বৈধতার সময় যদি ত্রুটি থাকে, বা যদি নির্দিষ্ট আইডিগুলি সম্পূর্ণ নিবন্ধিত স্ক্রিপ্টের সাথে সামঞ্জস্য না করে তবে কোনও স্ক্রিপ্ট আপডেট করা হয়নি।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <শূন্য>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
বর্ণনা
ব্যবহারকারী স্ক্রিপ্ট প্রসঙ্গে ব্যবহারকারী স্ক্রিপ্টগুলি সম্পাদন করতে userScripts
এপিআই ব্যবহার করুন।
অনুমতি
userScripts
ব্যবহারকারী স্ক্রিপ্টস এপিআই, chrome.userScripts
ব্যবহার করতে, আপনি স্ক্রিপ্টগুলি চালাতে চান এমন সাইটগুলির জন্য আপনার ম্যানিফেস্ট.জসন এবং "host_permissions"
এ "userScripts"
অনুমতি যুক্ত করুন।
{
"name": "User script test extension",
"manifest_version": 3,
"minimum_chrome_version": "120",
"permissions": [
"userScripts"
],
"host_permissions": [
"*://example.com/*"
]
}
প্রাপ্যতা
ধারণা এবং ব্যবহার
একটি ব্যবহারকারী স্ক্রিপ্ট হ'ল এর উপস্থিতি বা আচরণটি সংশোধন করার জন্য কোনও ওয়েব পৃষ্ঠায় ইনজেকশনের কোডের একটি স্নিপেট। অন্যান্য এক্সটেনশন বৈশিষ্ট্যগুলির বিপরীতে যেমন সামগ্রী স্ক্রিপ্ট এবং chrome.scripting
এপিআই , ব্যবহারকারী স্ক্রিপ্টস এপিআই আপনাকে স্বেচ্ছাসেবী কোড চালাতে দেয়। এই এপিআই এক্সটেনশনের জন্য প্রয়োজনীয় যা ব্যবহারকারীর দ্বারা সরবরাহিত স্ক্রিপ্টগুলি চালায় যা আপনার এক্সটেনশন প্যাকেজের অংশ হিসাবে প্রেরণ করা যায় না।
এক্সটেনশন ব্যবহারকারীদের জন্য বিকাশকারী মোড
এক্সটেনশন বিকাশকারী হিসাবে, আপনার ইতিমধ্যে ক্রোম ইনস্টলেশনটিতে বিকাশকারী মোড সক্ষম রয়েছে। ব্যবহারকারী স্ক্রিপ্ট এক্সটেনশনের জন্য, আপনার ব্যবহারকারীদের বিকাশকারী মোড সক্ষম করতে হবে। এখানে এমন নির্দেশাবলী রয়েছে যা আপনি নিজের ডকুমেন্টেশনে অনুলিপি এবং পেস্ট করতে পারেন।
-
chrome://extensions
প্রবেশ করে এক্সটেনশন পৃষ্ঠায় যান। (ডিজাইনের মাধ্যমেchrome://
ইউআরএলগুলি লিঙ্কযোগ্য নয়)) বিকাশকারী মোডের পাশের টগল সুইচটিতে ক্লিক করে বিকাশকারী মোড সক্ষম করুন৷
এক্সটেনশন পৃষ্ঠা (ক্রোম: // এক্সটেনশন)
chrome.userScripts
একটি ত্রুটি ছুড়ে দেয় কিনা তা যাচাই করে বিকাশকারী মোড সক্ষম করা আছে কিনা তা আপনি নির্ধারণ করতে পারেন। যেমন:
function isUserScriptsAvailable() {
try {
// Property access which throws if developer mode is not enabled.
chrome.userScripts;
return true;
} catch {
// Not available.
return false;
}
}
বিচ্ছিন্ন বিশ্বে কাজ
ব্যবহারকারী এবং সামগ্রী উভয় স্ক্রিপ্ট উভয়ই বিচ্ছিন্ন বিশ্বে বা মূল বিশ্বে চলতে পারে। একটি বিচ্ছিন্ন বিশ্ব হ'ল একটি কার্যকর পরিবেশ যা কোনও হোস্ট পৃষ্ঠা বা অন্যান্য এক্সটেনশনে অ্যাক্সেসযোগ্য নয়। এটি কোনও ব্যবহারকারীর স্ক্রিপ্টকে হোস্ট পৃষ্ঠা বা অন্যান্য এক্সটেনশনের ব্যবহারকারী এবং সামগ্রী স্ক্রিপ্টগুলিকে প্রভাবিত না করে তার জাভাস্ক্রিপ্ট পরিবেশ পরিবর্তন করতে দেয়। বিপরীতে, ব্যবহারকারী স্ক্রিপ্টগুলি (এবং সামগ্রী স্ক্রিপ্টগুলি) হোস্ট পৃষ্ঠায় বা অন্যান্য এক্সটেনশনের ব্যবহারকারী এবং সামগ্রী স্ক্রিপ্টগুলিতে দৃশ্যমান নয়। মূল বিশ্বে চলমান স্ক্রিপ্টগুলি হোস্ট পৃষ্ঠাগুলি এবং অন্যান্য এক্সটেনশনে অ্যাক্সেসযোগ্য এবং হোস্ট পৃষ্ঠাগুলি এবং অন্যান্য এক্সটেনশনে দৃশ্যমান। বিশ্ব নির্বাচন করতে, ব্যবহারকারী স্ক্রিপ্টগুলি কল করার সময় "USER_SCRIPT"
বা "MAIN"
পাস করুন userScripts.register()
USER_SCRIPT
ওয়ার্ল্ডের জন্য একটি সামগ্রী সুরক্ষা নীতি কনফিগার করতে, userScripts.configureWorld()
:
chrome.userScripts.configureWorld({
csp: "script-src 'self'"
});
মেসেজিং
সামগ্রী স্ক্রিপ্ট এবং অফস্ক্রিন নথিগুলির মতো, ব্যবহারকারী স্ক্রিপ্টগুলি মেসেজিং ব্যবহার করে কোনও এক্সটেনশনের অন্যান্য অংশগুলির সাথে যোগাযোগ করে (যার অর্থ তারা runtime.sendMessage()
এবং runtime.connect()
কোনও এক্সটেনশনের অন্য কোনও অংশ হিসাবে) কল করতে পারে)। তবে, তারা ডেডিকেটেড ইভেন্ট হ্যান্ডলারগুলি ব্যবহার করে প্রাপ্ত হয়েছে (যার অর্থ, তারা onMessage
বা onConnect
ব্যবহার করে না)। এই হ্যান্ডলারগুলিকে runtime.onUserScriptMessage
বলা হয় runtime.onUserScriptConnect
ডেডিকেটেড হ্যান্ডলারগুলি ব্যবহারকারীর স্ক্রিপ্টগুলি থেকে বার্তাগুলি সনাক্ত করা সহজ করে তোলে, যা একটি কম বিশ্বাসযোগ্য প্রসঙ্গ।
কোনও বার্তা প্রেরণের আগে আপনাকে অবশ্যই messaging
আর্গুমেন্টটি true
সেট করে configureWorld()
কল করতে হবে। নোট করুন যে csp
এবং messaging
উভয় যুক্তি একই সময়ে পাস করা যেতে পারে।
chrome.userScripts.configureWorld({
messaging: true
});
এক্সটেনশন আপডেট
যখন কোনও এক্সটেনশন আপডেট হয় তখন ব্যবহারকারীর স্ক্রিপ্টগুলি সাফ হয়। আপনি runtime.onInstalled
কোড চালানোর মাধ্যমে এগুলি আবার যুক্ত করতে পারেন extence ইভেন্ট কলব্যাকে পাস করা কেবল "update"
কারণেই সাড়া দিন।
উদাহরণ
এই উদাহরণটি আমাদের নমুনা সংগ্রহস্থলে ব্যবহারকারী স্ক্রিপ্টের নমুনা থেকে।
একটি স্ক্রিপ্ট নিবন্ধন করুন
নিম্নলিখিত উদাহরণটি register()
। প্রথম যুক্তিটি হ'ল স্ক্রিপ্টগুলি নিবন্ধিত করার জন্য সংজ্ঞায়িত অবজেক্টগুলির একটি অ্যারে। এখানে প্রদর্শিত হওয়ার চেয়ে আরও বেশি বিকল্প রয়েছে।
chrome.userScripts.register([{
id: 'test',
matches: ['*://*/*'],
js: [{code: 'alert("Hi!")'}]
}]);
প্রকারভেদ
ExecutionWorld
কোনও ব্যবহারকারী স্ক্রিপ্টের মধ্যে জাভাস্ক্রিপ্ট বিশ্বটি কার্যকর করার জন্য।
এনাম
"প্রধান" "ইউজার_স্ক্রিপ্ট"
ডিওএম এর কার্যকরকরণের পরিবেশ নির্দিষ্ট করে, যা হোস্ট পৃষ্ঠার জাভাস্ক্রিপ্টের সাথে ভাগ করা কার্যকর পরিবেশ।
ব্যবহারকারীর স্ক্রিপ্টগুলির জন্য নির্দিষ্ট এবং এটি পৃষ্ঠার সিএসপি থেকে অব্যাহতিপ্রাপ্ত কার্যকারিতা পরিবেশ নির্দিষ্ট করে।
InjectionResult
বৈশিষ্ট্য
- ডকুমেন্টআইডি
স্ট্রিং
ইনজেকশনের সাথে সম্পর্কিত নথি।
- ত্রুটি
স্ট্রিং al চ্ছিক
ত্রুটি, যদি থাকে।
error
এবংresult
পারস্পরিক একচেটিয়া। - ফ্রেমিড
সংখ্যা
ইনজেকশনের সাথে যুক্ত ফ্রেম।
- ফলাফল
কোন al চ্ছিক
স্ক্রিপ্ট সম্পাদনের ফলাফল।
InjectionTarget
বৈশিষ্ট্য
- অলফ্রেমস
বুলিয়ান al চ্ছিক
স্ক্রিপ্টটি ট্যাবের মধ্যে সমস্ত ফ্রেমে ইনজেকশন করা উচিত কিনা। ডিফল্ট থেকে মিথ্যা.
frameIds
নির্দিষ্ট করা থাকলে এটি অবশ্যই সত্য হবে না। - ডকুমেন্টিডস
স্ট্রিং[] ঐচ্ছিক
ইনজেকশন করতে নির্দিষ্ট ডকুমেন্টেডগুলির আইডি।
frameIds
সেট করা থাকলে এটি সেট করা উচিত নয়। - ফ্রেমিডস
সংখ্যা [] al চ্ছিক
ইনজেকশন করতে নির্দিষ্ট ফ্রেমের আইডি।
- তাবিড
সংখ্যা
ইনজেকশন করতে হবে এমন ট্যাবের আইডি।
RegisteredUserScript
বৈশিষ্ট্য
- অলফ্রেমস
বুলিয়ান al চ্ছিক
যদি সত্য হয় তবে এটি সমস্ত ফ্রেমে ইনজেকশন দেবে, এমনকি যদি ফ্রেমটি ট্যাবের শীর্ষ সর্বাধিক ফ্রেম না হয়। প্রতিটি ফ্রেম ইউআরএল প্রয়োজনীয়তার জন্য স্বাধীনভাবে পরীক্ষা করা হয়; ইউআরএল প্রয়োজনীয়তা পূরণ না হলে এটি শিশু ফ্রেমে ইনজেকশন দেবে না। মিথ্যা হিসাবে ডিফল্ট, যার অর্থ কেবল শীর্ষ ফ্রেমের সাথে মিল রয়েছে।
- বঞ্চিত
স্ট্রিং[] ঐচ্ছিক
পৃষ্ঠাগুলির জন্য ওয়াইল্ডকার্ড নিদর্শনগুলি নির্দিষ্ট করে এই ব্যবহারকারী স্ক্রিপ্টটি ইনজেকশন দেওয়া হবে না।
- বাদে
স্ট্রিং[] ঐচ্ছিক
এই ব্যবহারকারীর স্ক্রিপ্টটি অন্যথায় ইনজেকশন দেওয়া হবে এমন পৃষ্ঠাগুলি বাদ দেয়। এই স্ট্রিংগুলির সিনট্যাক্স সম্পর্কে আরও তথ্যের জন্য ম্যাচের নিদর্শনগুলি দেখুন।
- আইডি
স্ট্রিং
এপিআই কলটিতে নির্দিষ্ট করা ব্যবহারকারী স্ক্রিপ্টের আইডি। এই সম্পত্তিটি অবশ্যই '_' দিয়ে শুরু করা উচিত নয় কারণ এটি উত্পন্ন স্ক্রিপ্ট আইডিগুলির জন্য উপসর্গ হিসাবে সংরক্ষিত।
- অন্তর্ভুক্ত
স্ট্রিং[] ঐচ্ছিক
পৃষ্ঠাগুলির জন্য ওয়াইল্ডকার্ড নিদর্শনগুলি নির্দিষ্ট করে এই ব্যবহারকারী স্ক্রিপ্টটি ইনজেকশন দেওয়া হবে।
- জেএস
স্ক্রিপ্টসোর্স [] al চ্ছিক
স্ক্রিপ্টসোর্স অবজেক্টগুলির তালিকা স্ক্রিপ্টগুলির উত্সগুলি ম্যাচিং পৃষ্ঠাগুলিতে ইনজেকশনের জন্য সংজ্ঞায়িত করে। এই সম্পত্তিটি অবশ্যই $ {রেফ: রেজিস্টার} এর জন্য নির্দিষ্ট করা উচিত এবং নির্দিষ্ট করা হলে এটি অবশ্যই একটি খালি অ্যারে হতে হবে।
- মেলে
স্ট্রিং[] ঐচ্ছিক
এই ব্যবহারকারীর স্ক্রিপ্টটি কোন পৃষ্ঠাগুলিতে ইনজেকশন দেওয়া হবে তা নির্দিষ্ট করে। এই স্ট্রিংগুলির সিনট্যাক্স সম্পর্কে আরও তথ্যের জন্য ম্যাচের নিদর্শনগুলি দেখুন। এই সম্পত্তিটি অবশ্যই $ {রেফ: রেজিস্টার} এর জন্য নির্দিষ্ট করা উচিত}
- রানাত
Runat al চ্ছিক
জাভাস্ক্রিপ্ট ফাইলগুলি ওয়েব পৃষ্ঠায় ইনজেকশনের সময় নির্দিষ্ট করে। পছন্দসই এবং ডিফল্ট মানটি
document_idle
। - বিশ্ব
এক্সিকিউশন ওয়ার্ল্ড al চ্ছিক
স্ক্রিপ্টটি চালানোর জন্য জাভাস্ক্রিপ্ট এক্সিকিউশন এনভায়রনমেন্ট Def ডিফল্টটি
`USER_SCRIPT`
- ওয়ার্ল্ডআইডি
স্ট্রিং al চ্ছিক
Chrome 133+কার্যকর করতে ব্যবহারকারী স্ক্রিপ্ট ওয়ার্ল্ড আইডি নির্দিষ্ট করে। যদি বাদ দেওয়া হয় তবে স্ক্রিপ্টটি ডিফল্ট ব্যবহারকারী স্ক্রিপ্ট বিশ্বে কার্যকর করবে। কেবলমাত্র যদি
world
বাদ দেওয়া হয় বাUSER_SCRIPT
হয় তবে বৈধ। শীর্ষস্থানীয় আন্ডারস্কোর (_
) সহ মানগুলি সংরক্ষিত।
ScriptSource
বৈশিষ্ট্য
- কোড
স্ট্রিং al চ্ছিক
ইনজেকশনের জন্য জাভাস্ক্রিপ্ট কোডযুক্ত একটি স্ট্রিং। ঠিক
file
বাcode
মধ্যে একটি অবশ্যই নির্দিষ্ট করতে হবে। - ফাইল
স্ট্রিং al চ্ছিক
এক্সটেনশনের রুট ডিরেক্টরিটির সাথে সম্পর্কিত ইনজেকশনের জন্য জাভাস্ক্রিপ্ট ফাইলের পথ। ঠিক
file
বাcode
মধ্যে একটি অবশ্যই নির্দিষ্ট করতে হবে।
UserScriptFilter
বৈশিষ্ট্য
- আইডি
স্ট্রিং[] ঐচ্ছিক
getScripts
কেবল এই তালিকায় উল্লিখিত আইডিগুলির সাথে স্ক্রিপ্টগুলি ফেরত দেয়।
UserScriptInjection
বৈশিষ্ট্য
- ইনজেকশনমেডি
বুলিয়ান al চ্ছিক
ইনজেকশনটি যত তাড়াতাড়ি সম্ভব লক্ষ্যে ট্রিগার করা উচিত কিনা। নোট করুন যে এটি কোনও গ্যারান্টি নয় যে পৃষ্ঠা লোডের আগে ইনজেকশন ঘটবে, কারণ স্ক্রিপ্টটি লক্ষ্যবস্তুতে পৌঁছানোর সময় পৃষ্ঠাটি ইতিমধ্যে লোড হয়ে থাকতে পারে।
- জেএস
স্ক্রিপ্টসোর্স অবজেক্টগুলির তালিকা স্ক্রিপ্টগুলির উত্সগুলি লক্ষ্য করে ইনজেকশনের জন্য সংজ্ঞায়িত করে।
- লক্ষ্য
স্ক্রিপ্টটি ইনজেক্ট করার জন্য লক্ষ্য নির্দিষ্ট করে বিশদ বিবরণ।
- বিশ্ব
এক্সিকিউশন ওয়ার্ল্ড al চ্ছিক
স্ক্রিপ্টটি চালানোর জন্য জাভাস্ক্রিপ্ট "ওয়ার্ল্ড"। ডিফল্টটি হ'ল
USER_SCRIPT
। - ওয়ার্ল্ডআইডি
স্ট্রিং al চ্ছিক
কার্যকর করতে ব্যবহারকারী স্ক্রিপ্ট ওয়ার্ল্ড আইডি নির্দিষ্ট করে। যদি বাদ দেওয়া হয় তবে স্ক্রিপ্টটি ডিফল্ট ব্যবহারকারী স্ক্রিপ্ট বিশ্বে কার্যকর করবে। কেবলমাত্র যদি
world
বাদ দেওয়া হয় বাUSER_SCRIPT
হয় তবে বৈধ। শীর্ষস্থানীয় আন্ডারস্কোর (_
) সহ মানগুলি সংরক্ষিত।
WorldProperties
বৈশিষ্ট্য
- csp
স্ট্রিং al চ্ছিক
ওয়ার্ল্ড সিএসপি নির্দিষ্ট করে। ডিফল্ট হ'ল
`ISOLATED`
ওয়ার্ল্ড সিএসপি। - মেসেজিং
বুলিয়ান al চ্ছিক
মেসেজিং এপিআই উন্মুক্ত কিনা তা নির্দিষ্ট করে। ডিফল্ট
false
. - ওয়ার্ল্ডআইডি
স্ট্রিং al চ্ছিক
Chrome 133+আপডেট করার জন্য নির্দিষ্ট ব্যবহারকারী স্ক্রিপ্ট বিশ্বের আইডি নির্দিষ্ট করে। যদি সরবরাহ না করা হয় তবে ডিফল্ট ব্যবহারকারী স্ক্রিপ্ট বিশ্বের বৈশিষ্ট্যগুলি আপডেট করে। শীর্ষস্থানীয় আন্ডারস্কোর (
_
) সহ মানগুলি সংরক্ষিত।
পদ্ধতি
configureWorld()
chrome.userScripts.configureWorld(
properties: WorldProperties,
callback?: function,
)
`USER_SCRIPT`
এক্সিকিউশন পরিবেশটি কনফিগার করে।
পরামিতি
- বৈশিষ্ট্য
ব্যবহারকারী স্ক্রিপ্ট ওয়ার্ল্ড কনফিগারেশন রয়েছে।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <শূন্য>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
execute()
chrome.userScripts.execute(
injection: UserScriptInjection,
callback?: function,
)
একটি স্ক্রিপ্ট একটি লক্ষ্য প্রসঙ্গে ইনজেকশন। ডিফল্টরূপে, স্ক্রিপ্টটি document_idle
বা অবিলম্বে পৃষ্ঠাটি ইতিমধ্যে লোড হয়ে গেলে চালিত হবে। যদি injectImmediately
সম্পত্তিটি সেট করা থাকে তবে স্ক্রিপ্টটি অপেক্ষা না করেই ইনজেকশন দেবে, এমনকি পৃষ্ঠাটি লোডিং শেষ না হলেও। যদি স্ক্রিপ্টটি কোনও প্রতিশ্রুতির মূল্যায়ন করে তবে ব্রাউজারটি স্থিতিশীলতার জন্য অপেক্ষা করবে এবং ফলাফলের মানটি ফিরিয়ে দেওয়ার জন্য অপেক্ষা করবে।
পরামিতি
- ইনজেকশন
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:(result: InjectionResult[]) => void
- ফলাফল
রিটার্নস
প্রতিশ্রুতি < ইনজেকশন রিসাল্ট []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
getScripts()
chrome.userScripts.getScripts(
filter?: UserScriptFilter,
callback?: function,
)
এই এক্সটেনশনের জন্য সমস্ত গতিশীল-নিবন্ধিত ব্যবহারকারী স্ক্রিপ্টগুলি প্রদান করে।
পরামিতি
- ফিল্টার
ব্যবহারকারী স্ক্রিপ্টফিল্টার al চ্ছিক
যদি নির্দিষ্ট করা হয় তবে এই পদ্ধতিটি কেবল এটির সাথে মেলে কেবল ব্যবহারকারী স্ক্রিপ্টগুলি ফেরত দেয়।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:(scripts: RegisteredUserScript[]) => void
- স্ক্রিপ্ট
রিটার্নস
প্রতিশ্রুতি < রেজিস্ট্রেডউজারস্ক্রিপ্ট []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
getWorldConfigurations()
chrome.userScripts.getWorldConfigurations(
callback?: function,
)
সমস্ত নিবন্ধিত বিশ্ব কনফিগারেশন পুনরুদ্ধার করে।
পরামিতি
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:(worlds: WorldProperties[]) => void
- পৃথিবী
রিটার্নস
প্রতিশ্রুতি < ওয়ার্ল্ডপ্রোপার্টি []>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
register()
chrome.userScripts.register(
scripts: RegisteredUserScript[],
callback?: function,
)
এই এক্সটেনশনের জন্য এক বা একাধিক ব্যবহারকারী স্ক্রিপ্ট নিবন্ধন করে।
পরামিতি
- স্ক্রিপ্ট
নিবন্ধিত হওয়ার জন্য ব্যবহারকারী স্ক্রিপ্টগুলির একটি তালিকা রয়েছে।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <শূন্য>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
resetWorldConfiguration()
chrome.userScripts.resetWorldConfiguration(
worldId?: string,
callback?: function,
)
একটি ব্যবহারকারী স্ক্রিপ্ট বিশ্বের জন্য কনফিগারেশন পুনরায় সেট করুন। নির্দিষ্ট আইডি সহ বিশ্বে ইনজেকশন করা যে কোনও স্ক্রিপ্টগুলি ডিফল্ট ওয়ার্ল্ড কনফিগারেশন ব্যবহার করবে।
পরামিতি
- ওয়ার্ল্ডআইডি
স্ট্রিং al চ্ছিক
ব্যবহারকারী স্ক্রিপ্ট বিশ্বের আইডি পুনরায় সেট করতে। বাদ দেওয়া হলে, ডিফল্ট বিশ্বের কনফিগারেশন পুনরায় সেট করুন।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <শূন্য>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
unregister()
chrome.userScripts.unregister(
filter?: UserScriptFilter,
callback?: function,
)
এই এক্সটেনশনের জন্য সমস্ত গতিশীল-নিবন্ধিত ব্যবহারকারী স্ক্রিপ্টগুলি নিবন্ধভুক্ত করুন।
পরামিতি
- ফিল্টার
ব্যবহারকারী স্ক্রিপ্টফিল্টার al চ্ছিক
যদি নির্দিষ্ট করা হয় তবে এই পদ্ধতিটি কেবল এটির সাথে মেলে কেবল ব্যবহারকারী স্ক্রিপ্টগুলি নিবন্ধভুক্ত করে।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <শূন্য>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।
update()
chrome.userScripts.update(
scripts: RegisteredUserScript[],
callback?: function,
)
এই এক্সটেনশনের জন্য এক বা একাধিক ব্যবহারকারী স্ক্রিপ্ট আপডেট করে।
পরামিতি
- স্ক্রিপ্ট
আপডেট করার জন্য ব্যবহারকারী স্ক্রিপ্টগুলির একটি তালিকা রয়েছে। কোনও সম্পত্তি কেবলমাত্র বিদ্যমান স্ক্রিপ্টের জন্য আপডেট করা হয় যদি এটি এই অবজেক্টে নির্দিষ্ট করা থাকে। স্ক্রিপ্ট পার্সিং/ফাইল বৈধতার সময় যদি ত্রুটি থাকে, বা যদি নির্দিষ্ট আইডিগুলি সম্পূর্ণ নিবন্ধিত স্ক্রিপ্টের সাথে সামঞ্জস্য না করে তবে কোনও স্ক্রিপ্ট আপডেট করা হয়নি।
- কলব্যাক
ফাংশন al চ্ছিক
callback
প্যারামিটারটি দেখে মনে হচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <শূন্য>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট ভি 3 এবং পরে সমর্থিত, তবে কলব্যাকগুলি পশ্চাদপদ সামঞ্জস্যের জন্য সরবরাহ করা হয়। আপনি একই ফাংশন কল উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকের কাছে চলে যায়।