cari
Rumahhujung hadapan webtutorial jsTab Roulette - sambungan pertama saya

Tab Roulette - my first extension

Matlamat semasa saya ialah untuk mencipta sambungan Chrome ringkas yang menggunakan keupayaan latar belakang rangka kerja sambungan.

Untuk meringkaskan, skrip latar belakang beroperasi sebagai pekerja perkhidmatan, terutamanya direka untuk mengendalikan tugas yang tidak memerlukan interaksi pengguna langsung.

Salah satu peranan utamanya ialah bertindak sebagai hab komunikasi atau pengendali acara, berfungsi sebagai satu-satunya komponen yang berterusan dan boleh dipercayai dalam seni bina sambungan penyemak imbas. Tidak seperti skrip kandungan, tetingkap timbul atau halaman pilihan, yang bersifat sementara, pekerja perkhidmatan latar belakang memastikan kesinambungan dengan memulakan semula secara automatik apabila ditamatkan untuk mengendalikan acara masuk.

Saya merancang untuk memanfaatkan keupayaan skrip latar belakang ini sebagai pengawal pusat untuk sambungan saya.

Kes penggunaan

Pelanjutan Chrome pertama ini agak mudah. Ia akan mendengar klik pada ikon tindakan sambungan dan bertindak balas dengan mencetuskan tingkah laku seperti rolet. Rolet akan secara berurutan mengaktifkan tab yang sedang dibuka dalam penyemak imbas pengguna untuk tempoh yang singkat sehingga satu tab dibiarkan dipilih secara rawak.

Seperti yang anda lihat, sambungan ini tidak mempunyai tujuan praktikal tetapi bertujuan semata-mata sebagai latihan pembelajaran.

Manifes

{
  "name": "TabRoulette",
  "version": "0.0.1",
  "manifest_version": 3,
  "icons": {
    "16": "images/icon16.png",
    "32": "images/icon32.png",
    "48": "images/icon32.png",
    "128": "images/icon128.png"
  },
  "action": {
    "default_title": "Click to start",
    "default_icon": {
      "16": "images/icon16.png",
      "24": "images/icon24.png",
      "32": "images/icon32.png"
    }
  },
  "background": {
    "service_worker": "background.js"
  }
}

Selain ikon yang dinyatakan dalam manifes untuk digunakan dalam Kedai Web Chrome dan antara muka pengurusan sambungan, penambahan paling ketara ialah atribut tindakan. Atribut ini mengkonfigurasi tingkah laku sambungan apabila ikon bar alat diklik. Dalam kes kami, ia mengarahkan pekerja perkhidmatan untuk memulakan rolet tab semasa interaksi pengguna.

Untuk mengambil kira
Kod saya menggunakan import ES, tetapi seperti yang ditunjukkan sebelum ini, service_worker tidak diisytiharkan secara eksplisit sebagai modul. Bagaimanakah ia masih berfungsi?

"background": {
  "service_worker": "service-worker.js",
  "type": "module"
}

Import ini dikendalikan dan diselesaikan oleh Vite semasa proses penggabungan.

Latar belakang

Seperti yang dinyatakan sebelum ini, skrip latar belakang akan mendengar klik pada ikon tindakan dan memulakan rolet tab sebagai tindak balas.

chrome.action.onClicked.addListener(async () => {
 ...
})

Aspek utama logik pendengar untuk diserlahkan: Pertama, saya perlu mengumpulkan semua tab yang sedang dibuka dalam tetingkap aktif. Ini penting kerana kod saya memerlukan rujukan kepada tab ini untuk mengitarnya secara berurutan.

const currentWindow = await chrome.windows.getCurrent();
const windowTabs = await chrome.tabs.query({
  windowId: currentWindow.id,
});

Saya pada mulanya keliru apabila menggunakan chrome.tabs.query tanpa menyatakan windowId, kerana ia mengembalikan semua tab merentas semua tetingkap penyemak imbas yang terbuka, sedangkan saya hanya mahukan tab dari tetingkap aktif. Ini membawa kepada keputusan yang tidak dijangka kerana bilangan tab yang lebih besar dalam senarai.

Setelah saya memahami tingkah laku ini, mengaktifkan tab secara berurutan menjadi mudah. Ia hanya melibatkan pengemaskinian sifat tab untuk menetapkan setiap satu sebagai aktif dalam urutan sehingga tab rawak akhirnya dipilih.

{
  "name": "TabRoulette",
  "version": "0.0.1",
  "manifest_version": 3,
  "icons": {
    "16": "images/icon16.png",
    "32": "images/icon32.png",
    "48": "images/icon32.png",
    "128": "images/icon128.png"
  },
  "action": {
    "default_title": "Click to start",
    "default_icon": {
      "16": "images/icon16.png",
      "24": "images/icon24.png",
      "32": "images/icon32.png"
    }
  },
  "background": {
    "service_worker": "background.js"
  }
}

Satu lagi matlamat yang ingin saya capai ialah melaraskan rentak tab diaktifkan—bermula dengan pantas dan perlahan hingga ke penghujung. Untuk mencapai ini, fungsi setInterval asli yang saya gunakan dalam ujian awal tidak mencukupi. Sebaliknya, saya melaksanakan utiliti kecil yang membolehkan saya membuat selang boleh laras, menyediakan cara untuk mengubah suai masanya secara dinamik mengikut keperluan.

"background": {
  "service_worker": "service-worker.js",
  "type": "module"
}

Dan itu sahaja—sambungan ringkas dengan kes penggunaan yang menyeronokkan, berfungsi sebagai alasan untuk menyelidiki lebih dalam dunia sambungan penyemak imbas. Saya juga berkongsi kod sumber dengan anda jika anda ingin tahu tentang butirannya.

Oh, dan saya juga menggunakan projek ini untuk meneroka proses penerbitan, yang saya dapati agak mudah. Sekarang, saya hanya menunggu semakan dan penerbitan akhir.

https://github.com/ivaneffable/tabRoulette

Atas ialah kandungan terperinci Tab Roulette - sambungan pertama saya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Python vs JavaScript: Memilih alat yang sesuai untuk pekerjaanPython vs JavaScript: Memilih alat yang sesuai untuk pekerjaanMay 08, 2025 am 12:10 AM

Sama ada untuk memilih Python atau JavaScript bergantung kepada jenis projek: 1) Pilih Python untuk Sains Data dan Tugas Automasi; 2) Pilih JavaScript untuk pembangunan front-end dan penuh. Python disukai untuk perpustakaannya yang kuat dalam pemprosesan data dan automasi, sementara JavaScript sangat diperlukan untuk kelebihannya dalam interaksi web dan pembangunan stack penuh.

Python dan javascript: memahami kekuatan masing -masingPython dan javascript: memahami kekuatan masing -masingMay 06, 2025 am 12:15 AM

Python dan JavaScript masing -masing mempunyai kelebihan mereka sendiri, dan pilihan bergantung kepada keperluan projek dan keutamaan peribadi. 1. Python mudah dipelajari, dengan sintaks ringkas, sesuai untuk sains data dan pembangunan back-end, tetapi mempunyai kelajuan pelaksanaan yang perlahan. 2. JavaScript berada di mana-mana dalam pembangunan front-end dan mempunyai keupayaan pengaturcaraan tak segerak yang kuat. Node.js menjadikannya sesuai untuk pembangunan penuh, tetapi sintaks mungkin rumit dan rawan kesilapan.

Inti JavaScript: Adakah ia dibina di atas C atau C?Inti JavaScript: Adakah ia dibina di atas C atau C?May 05, 2025 am 12:07 AM

Javascriptisnotbuiltoncorc; it'saninterpretedlanguagethatrunsonenginesoftenwritteninc .1) javascriptwasdesignedasalightweight, interpratedlanguageforwebbrowsers.2)

Aplikasi JavaScript: Dari Front-End ke Back-EndAplikasi JavaScript: Dari Front-End ke Back-EndMay 04, 2025 am 12:12 AM

JavaScript boleh digunakan untuk pembangunan front-end dan back-end. Bahagian depan meningkatkan pengalaman pengguna melalui operasi DOM, dan back-end mengendalikan tugas pelayan melalui Node.js. 1. Contoh front-end: Tukar kandungan teks laman web. 2. Contoh backend: Buat pelayan Node.js.

Python vs JavaScript: Bahasa mana yang harus anda pelajari?Python vs JavaScript: Bahasa mana yang harus anda pelajari?May 03, 2025 am 12:10 AM

Memilih Python atau JavaScript harus berdasarkan perkembangan kerjaya, keluk pembelajaran dan ekosistem: 1) Pembangunan Kerjaya: Python sesuai untuk sains data dan pembangunan back-end, sementara JavaScript sesuai untuk pembangunan depan dan penuh. 2) Kurva Pembelajaran: Sintaks Python adalah ringkas dan sesuai untuk pemula; Sintaks JavaScript adalah fleksibel. 3) Ekosistem: Python mempunyai perpustakaan pengkomputeran saintifik yang kaya, dan JavaScript mempunyai rangka kerja front-end yang kuat.

Rangka Kerja JavaScript: Menguasai Pembangunan Web ModenRangka Kerja JavaScript: Menguasai Pembangunan Web ModenMay 02, 2025 am 12:04 AM

Kuasa rangka kerja JavaScript terletak pada pembangunan yang memudahkan, meningkatkan pengalaman pengguna dan prestasi aplikasi. Apabila memilih rangka kerja, pertimbangkan: 1.

Hubungan antara JavaScript, C, dan penyemak imbasHubungan antara JavaScript, C, dan penyemak imbasMay 01, 2025 am 12:06 AM

Pengenalan Saya tahu anda mungkin merasa pelik, apa sebenarnya yang perlu dilakukan oleh JavaScript, C dan penyemak imbas? Mereka seolah -olah tidak berkaitan, tetapi sebenarnya, mereka memainkan peranan yang sangat penting dalam pembangunan web moden. Hari ini kita akan membincangkan hubungan rapat antara ketiga -tiga ini. Melalui artikel ini, anda akan mempelajari bagaimana JavaScript berjalan dalam penyemak imbas, peranan C dalam enjin pelayar, dan bagaimana mereka bekerjasama untuk memacu rendering dan interaksi laman web. Kita semua tahu hubungan antara JavaScript dan penyemak imbas. JavaScript adalah bahasa utama pembangunan front-end. Ia berjalan secara langsung di penyemak imbas, menjadikan laman web jelas dan menarik. Adakah anda pernah tertanya -tanya mengapa Javascr

Aliran node.js dengan typescriptAliran node.js dengan typescriptApr 30, 2025 am 08:22 AM

Node.js cemerlang pada I/O yang cekap, sebahagian besarnya terima kasih kepada aliran. Aliran memproses data secara berperingkat, mengelakkan beban memori-ideal untuk fail besar, tugas rangkaian, dan aplikasi masa nyata. Menggabungkan sungai dengan keselamatan jenis typescript mencipta powe

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.