Yanıtlar:
Bunun chrome.tabs.query()
gibi kullanın :
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
let url = tabs[0].url;
// use `url` here inside the callback because it's asynchronous!
});
Bu chrome.tabs
, uzantı bildiriminizde API'ya erişim istemenizi gerektirir :
"permissions": [ ...
"tabs"
]
"Geçerli sekmeniz" tanımının, uzantınızın gereksinimlerine bağlı olarak değişebileceğini unutmayın.
lastFocusedWindow: true
Kullanıcının odaklanmış penceresindeki (genellikle en üstteki pencere) geçerli sekmeye erişmek istediğinizde sorgudaki ayar uygundur.
Ayar currentWindow: true
, uzantınızın kodunun şu anda yürütülmekte olduğu pencerede geçerli sekmeyi almanızı sağlar. Örneğin, uzantınız yeni bir pencere / açılır pencere (odak değiştirerek) oluşturuyor, ancak yine de uzantının çalıştırıldığı pencereden sekme bilgilerine erişmek istiyorsa bu yararlı olabilir.
lastFocusedWindow: true
Bu örnekte kullanmayı seçtim , çünkü Google currentWindow
her zaman bulunmayabilecek durumları söylüyor .
Burada tanımlanan özelliklerden herhangi birini kullanarak sekme sorgunuzu daha da daraltabilirsiniz: chrome.tabs.query
Uyarı! chrome.tabs.getSelected
kullanımdan kaldırıldı . Lütfen chrome.tabs.query
diğer cevaplarda gösterildiği gibi kullanın .
İlk olarak, manifest.json'da API izinlerini ayarlamanız gerekir:
"permissions": [
"tabs"
]
Ve URL'yi depolamak için:
chrome.tabs.getSelected(null,function(tab) {
var tablink = tab.url;
});
chrome.tabs.getSelected
, tanımsız, ayrı bir soruda sorabilir miyim?
chrome.tabs.getSelected
Yöntem kullanımdan kaldırıldı doğru yöntem listelenir cevap aşağıda bu .
Diğer yanıtlar, bir açılır pencereden veya arka plan komut dosyasından bilmek istediğinizi varsayar.
Bir içerik komut dosyasından geçerli URL'yi bilmek istiyorsanız , standart JS yolu geçerlidir:
window.location.toString()
window.location
URL'nin ana bilgisayar, protokol veya yol gibi ayrı bölümlerine erişmek için özelliklerini kullanabilirsiniz .
window.location.host
Im "stackoverflow.com" de olup olmadığını görmek oldu .
match:"<all_urls>"
, content_script bölümünde durum gerektirir ve Chrome, <all_urls> için tavsiye edilmez.
contentScript.js
ve değil background.js
. URL'den filtrelediğiniz tüm verileri mesaja iletmeniz yeterlidir background.js
. Örnek: let message = { type: "fetchVideoDate", id: getVideoId() };
burada getVideoId()
bir yürütme içerir window.location.toString()
. Aksi takdirde bazı chrome://temp_background_file.html
veriler alırsınız . Ayrıca bazen message
çağrıldığını unutmayın request
.
Sorun chrome.tabs.getSelected eşzamansız olmasıdır. Aşağıdaki bu kod genellikle beklendiği gibi çalışmaz. 'Tablink' değeri, konsola yazıldığında hala tanımsız olacaktır çünkü getSelected değeri sıfırlayan geri aramayı henüz başlatmadı:
var tablink;
chrome.tabs.getSelected(null,function(tab) {
tablink = tab.url;
});
console.log(tablink);
Çözüm, kodu bir işlevde kullanacağınız ve getSelected tarafından çağrılan yere sarmaktır. Bu şekilde, her zaman ayarlanmış bir değere sahip olmanız garanti edilir, çünkü kodunuzun yürütülmeden önce değerin sağlanmasını beklemesi gerekecektir.
Şuna benzer bir şey deneyin:
chrome.tabs.getSelected(null, function(tab) {
myFunction(tab.url);
});
function myFunction(tablink) {
// do stuff here
console.log(tablink);
}
Merhaba, mevcut Siteyi bir arkadaşınıza e-posta ile gönderen bir Google Chrome Örneği. Temel fikir istediğiniz şeydir ... her şeyden önce sayfanın içeriğini getirir (sizin için ilgi göstermez) ... daha sonra URL'yi alır (<- iyi bölüm)
Buna ek olarak ben motstly Documents okuma yerine tercih güzel bir çalışma kodu örneğidir.
Burada bulunabilir: Bu sayfayı e-postayla gönder
Bu Çözüm zaten TEST EDİLDİ.
manifest.json içinde API için izinleri ayarlama
"permissions": [ ...
"tabs",
"activeTab",
"<all_urls>"
]
İlk yükleme çağrısı fonksiyonunda. https://developer.chrome.com/extensions/tabs#event-onActivated
chrome.tabs.onActivated.addListener((activeInfo) => {
sendCurrentUrl()
})
Değişen çağrı fonksiyonu. https://developer.chrome.com/extensions/tabs#event-onSelectionChanged
chrome.tabs.onSelectionChanged.addListener(() => {
sendCurrentUrl()
})
URL alma işlevi
function sendCurrentUrl() {
chrome.tabs.getSelected(null, function(tab) {
var tablink = tab.url
console.log(tablink)
})
. Kullananlar için context menu api
, dokümanlar sekme bilgilerinin nasıl alınacağı konusunda net değildir.
chrome.contextMenus.onClicked.addListener(function(info, tab) {
console.log(info);
return console.log(tab);
});
Sen kontrol etmek zorunda bu .
HTML
<button id="saveActionId"> Save </button>
manifest.json
"permissions": [
"activeTab",
"tabs"
]
JavaScript
Aşağıdaki kod, etkin pencerenin tüm URL'lerini düğme tıklamasının bir parçası olarak JSON nesnesine kaydeder.
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);