Saya bersenang-senang dengan ekstensi Google Chrome, dan saya hanya ingin tahu bagaimana saya bisa menyimpan URL tab saat ini dalam suatu variabel?
Saya bersenang-senang dengan ekstensi Google Chrome, dan saya hanya ingin tahu bagaimana saya bisa menyimpan URL tab saat ini dalam suatu variabel?
Gunakan chrome.tabs.query()
seperti ini:
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
let url = tabs[0].url;
// use `url` here inside the callback because it's asynchronous!
});
Ini mengharuskan Anda meminta akses ke chrome.tabs
API di manifes ekstensi Anda :
"permissions": [ ...
"tabs"
]
Penting untuk dicatat bahwa definisi "tab saat ini" Anda mungkin berbeda tergantung pada kebutuhan ekstensi Anda.
Pengaturan lastFocusedWindow: true
dalam kueri sesuai ketika Anda ingin mengakses tab saat ini di jendela fokus pengguna (biasanya jendela paling atas).
Pengaturan currentWindow: true
memungkinkan Anda untuk mendapatkan tab saat ini di jendela tempat kode ekstensi Anda sedang dieksekusi. Misalnya, ini mungkin berguna jika ekstensi Anda membuat jendela / jendela baru (mengubah fokus), tetapi masih ingin mengakses informasi tab dari jendela tempat ekstensi dijalankan.
Saya memilih untuk menggunakan lastFocusedWindow: true
dalam contoh ini, karena Google menyebut kasus-kasus yang currentWindow
mungkin tidak selalu ada .
Anda bebas untuk lebih mempersempit kueri tab Anda menggunakan salah satu properti yang didefinisikan di sini: chrome.tabs.query
Peringatan!
chrome.tabs.getSelected
sudah usang . Silakan gunakanchrome.tabs.query
seperti yang ditunjukkan pada jawaban lain.Pertama, Anda harus mengatur izin untuk API di manifes.json:
Dan untuk menyimpan URL:
sumber
chrome.tabs.getSelected
tidak terdefinisi, haruskah saya menanyakannya dalam pertanyaan terpisah?chrome.tabs.getSelected
Metode telah usang, metode yang benar tercantum di bawah ini jawabannya .Jawaban lain menganggap Anda ingin mengetahuinya dari munculan atau skrip latar belakang.
Jika Anda ingin mengetahui URL saat ini dari skrip konten , cara JS standar berlaku:
Anda dapat menggunakan properti
window.location
untuk mengakses setiap bagian dari URL, seperti host, protokol, atau jalur.sumber
window.location.host
melihat apakah saya di "stackoverflow.com" atau tidak.match:"<all_urls>"
situasi di bagian content_script dan Chrome tidak merekomendasikan <all_urls>.contentScript.js
dan bukan dibackground.js
. Cukup kirimkan data apa pun yang telah Anda filter dari URL ke dalam pesanbackground.js
. Contoh: dilet message = { type: "fetchVideoDate", id: getVideoId() };
managetVideoId()
berisi eksekusiwindow.location.toString()
. Kalau tidak, Anda akan mendapatkan beberapachrome://temp_background_file.html
data. Perhatikan juga bahwa kadang-kadangmessage
disebutrequest
.Masalahnya adalah chrome.tabs.getSelected asynchronous. Kode di bawah ini umumnya tidak akan berfungsi seperti yang diharapkan. Nilai 'tablink' akan tetap tidak terdefinisi saat ditulis ke konsol karena getSelected belum memanggil panggilan balik yang menyetel ulang nilai:
Solusinya adalah dengan membungkus kode di mana Anda akan menggunakan nilai dalam suatu fungsi dan meminta itu dipanggil oleh getSelected. Dengan cara ini Anda dijamin akan selalu memiliki nilai yang ditetapkan, karena kode Anda harus menunggu nilai diberikan sebelum dieksekusi.
Coba sesuatu seperti:
sumber
Hai di sini adalah Sampel Google Chrome yang mengirimkan email ke Situs saat ini kepada seorang teman. Ide dasar di belakang adalah apa yang Anda inginkan ... pertama-tama ia mengambil konten halaman (bukan untuk Anda) ... kemudian mendapatkan URL (<- bagian yang baik)
Selain itu itu adalah contoh kode kerja yang bagus, yang saya lebih suka motstly daripada membaca Dokumen.
Dapat ditemukan di sini: Email halaman ini
sumber
Solusi ini sudah DIUJI.
setel izin untuk API di manifest.json
Pada fungsi panggilan beban pertama. https://developer.chrome.com/extensions/tabs#event-onActivated
Di ubah fungsi panggilan. https://developer.chrome.com/extensions/tabs#event-onSelectionChanged
fungsi untuk mendapatkan URL
sumber
Bagi mereka yang menggunakan
context menu api
, dokumen tidak segera jelas tentang cara mendapatkan informasi tab.https://developer.chrome.com/extensions/contextMenus
sumber
Anda harus memeriksa ini .
HTML
manifes. json
JavaScript
Kode di bawah ini akan menyimpan semua url jendela aktif ke objek JSON sebagai bagian dari klik tombol.
sumber