উত্তর:
এটি ব্যবহার করুন chrome.tabs.query():
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
let url = tabs[0].url;
// use `url` here inside the callback because it's asynchronous!
});
এর জন্য chrome.tabsআপনার এক্সটেনশান ম্যানিফেস্টে আপনি API এ অ্যাক্সেসের অনুরোধ করেছেন :
"permissions": [ ...
"tabs"
]
এটি উল্লেখ করা গুরুত্বপূর্ণ যে আপনার "বর্তমান ট্যাব" এর সংজ্ঞা আপনার এক্সটেনশনের প্রয়োজনের উপর নির্ভর করে পৃথক হতে পারে।
lastFocusedWindow: trueযখন আপনি ব্যবহারকারীর ফোকাস উইন্ডোতে (সাধারণত শীর্ষস্থানীয় উইন্ডো) বর্তমান ট্যাবটি অ্যাক্সেস করতে চান তখন ক্যোয়ারীতে সেট করা উপযুক্ত।
সেটিং currentWindow: trueআপনাকে উইন্ডোটিতে বর্তমান ট্যাবটি পেতে দেয় যেখানে আপনার এক্সটেনশনের কোডটি বর্তমানে কার্যকর করছে। উদাহরণস্বরূপ, যদি আপনার এক্সটেনশানটি একটি নতুন উইন্ডো / পপআপ (ফোকাস পরিবর্তন) তৈরি করে তবে এটি কার্যকর হতে পারে তবে এখনও উইন্ডোটি যেখানে ট্যাবলেটটি চালানো হয়েছিল তা থেকে ট্যাব তথ্য অ্যাক্সেস করতে চায়।
আমি lastFocusedWindow: trueএই উদাহরণটিতে ব্যবহার করা বেছে নিয়েছি , কারণ গুগল এমন সব ক্ষেত্রে কল দেয় যা currentWindow সর্বদা উপস্থিত নাও হতে পারে ।
এখানে সংজ্ঞায়িত যে কোনও বৈশিষ্ট্য ব্যবহার করে আপনি নিজের ট্যাব ক্যোয়ারীটি আরও পরিমার্জন করতে পারেন: chrome.tabs.query
সতর্কবাণী! chrome.tabs.getSelectedহয় অবচিত । chrome.tabs.queryঅন্যান্য উত্তরে প্রদর্শিত হিসাবে ব্যবহার করুন ।
প্রথমত, আপনি ম্যানিফেস্ট.জসনে এপিআইয়ের অনুমতি নির্ধারণ করতে হবে:
"permissions": [
"tabs"
]
এবং ইউআরএল সংরক্ষণ করতে:
chrome.tabs.getSelected(null,function(tab) {
var tablink = tab.url;
});
chrome.tabs.getSelectedনা, অপরিজ্ঞাত, আমি কি এটি আলাদা প্রশ্নে জিজ্ঞাসা করব?
chrome.tabs.getSelectedপদ্ধতি অবচিত হয়েছে, সঠিক পদ্ধতি এ তালিকাভুক্ত করা হয় উত্তর নিচের এই ।
অন্যান্য উত্তরগুলি ধরে নিয়েছে যে আপনি এটি পপআপ বা ব্যাকগ্রাউন্ড স্ক্রিপ্ট থেকে জানতে চান।
আপনি যদি কোনও সামগ্রী স্ক্রিপ্ট থেকে বর্তমান ইউআরএলটি জানতে চান , মানক জেএস উপায় প্রযোজ্য:
window.location.toString()
আপনি window.locationইউআরএলটির পৃথক অংশগুলি যেমন হোস্ট, প্রোটোকল বা পাথের অ্যাক্সেসের বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন ।
window.location.host"স্ট্যাকওভারফ্লো ডটকম" এ আছি কিনা তা দেখতে চেয়েছিলাম ।
match:"<all_urls>"এটিতে বিষয়বস্তু_স্ক্রিপ্ট বিভাগে পরিস্থিতি প্রয়োজন এবং ক্রোম <সমস্ত_আরলস> আসে না।
contentScript.jsএবং এ background.js। আপনি যে বার্তাটি ইউআরএল থেকে ফিল্টার করেছেন তাতে কোনও বার্তায় পাস করুন background.js। উদাহরণ: let message = { type: "fetchVideoDate", id: getVideoId() };যেখানে getVideoId()একটি কার্যকর করা থাকে window.location.toString()। অন্যথায় আপনি কিছু chrome://temp_background_file.htmlতথ্য পাবেন। আরও মনে রাখবেন যে কখনও কখনও messageবলা হয় request।
সমস্যাটি হ'ল chrome.tabs.getSelected হ'ল অবিচ্ছিন্ন। নীচের এই কোডটি সাধারণত প্রত্যাশার মতো কাজ করবে না। কনসোলটিতে লিখিত হয়ে গেলে 'ট্যাবলিঙ্ক'-এর মানটি এখনও অপরিজ্ঞাত হবে কারণ getSelected এখনও কলব্যাকটি চালু করে নি যা মানটি পুনরায় সেট করে:
var tablink;
chrome.tabs.getSelected(null,function(tab) {
tablink = tab.url;
});
console.log(tablink);
সমাধানটি হ'ল কোডটি মোড়ানো যেখানে আপনি কোনও ফাংশনে মানটি ব্যবহার করবেন এবং এটি getSelected দ্বারা অনুরোধ করা হবে। এইভাবে আপনার সর্বদা একটি মান সেট রাখার গ্যারান্টিযুক্ত, কারণ আপনার কোডটি কার্যকর হওয়ার আগে তার মান সরবরাহ করার জন্য অপেক্ষা করতে হবে।
এর মতো কিছু চেষ্টা করুন:
chrome.tabs.getSelected(null, function(tab) {
myFunction(tab.url);
});
function myFunction(tablink) {
// do stuff here
console.log(tablink);
}
হাই এখানে একটি গুগল ক্রোম নমুনা যা বর্তমান সাইটে বন্ধুর কাছে ইমেল করে। পেছনের বেসিক ধারণাটি যা আপনি চান ... সর্বপ্রথম এটি পৃষ্ঠার সামগ্রীটি নিয়ে আসে (আপনার জন্য আন্তঃপ্রকাশ করে না) ... এরপরে এটি URL টি পায় (<- ভাল অংশ)
অতিরিক্তভাবে এটি একটি দুর্দান্ত কার্যকরী কোড উদাহরণ, যা আমি নথির পড়ার চেয়ে মোস্টলি পছন্দ করি।
এখানে পাওয়া যাবে: এই পৃষ্ঠাটি ইমেল করুন
এই সমাধানটি ইতিমধ্যে পরীক্ষিত।
ম্যানিফেস্ট.জসনে এপিআইয়ের জন্য অনুমতি সেট করুন
"permissions": [ ...
"tabs",
"activeTab",
"<all_urls>"
]
প্রথম লোড কল ফাংশনে। https://developer.chrome.com/extensions/tabs#event-onActivated
chrome.tabs.onActivated.addListener((activeInfo) => {
sendCurrentUrl()
})
কল কল ফাংশন পরিবর্তন। https://developer.chrome.com/extensions/tabs#event-onSelectionChanged
chrome.tabs.onSelectionChanged.addListener(() => {
sendCurrentUrl()
})
ইউআরএল পেতে ফাংশন
function sendCurrentUrl() {
chrome.tabs.getSelected(null, function(tab) {
var tablink = tab.url
console.log(tablink)
})
যাঁরা ব্যবহার করেন তাঁদের context menu apiক্ষেত্রে ডকগুলি কীভাবে ট্যাব সম্পর্কিত তথ্য পাবেন সে সম্পর্কে তাত্ক্ষণিকভাবে পরিষ্কার নয়।
chrome.contextMenus.onClicked.addListener(function(info, tab) {
console.log(info);
return console.log(tab);
});
আপনি চেক করতে এই ।
এইচটিএমএল
<button id="saveActionId"> Save </button>
manifest.json টি
"permissions": [
"activeTab",
"tabs"
]
জাভাস্ক্রিপ্ট
নীচের কোডটি সক্রিয় উইন্ডোর সমস্ত url বাটন ক্লিকের অংশ হিসাবে JSON অবজেক্টে সংরক্ষণ করবে।
var saveActionButton = document.getElementById('saveActionId');
saveActionButton.addEventListener('click', function() {
myArray = [];
chrome.tabs.query({"currentWindow": true}, //{"windowId": targetWindow.id, "index": tabPosition});
function (array_of_Tabs) { //Tab tab
arrayLength = array_of_Tabs.length;
//alert(arrayLength);
for (var i = 0; i < arrayLength; i++) {
myArray.push(array_of_Tabs[i].url);
}
obj = JSON.parse(JSON.stringify(myArray));
});
}, false);