Advertisement
  1. Code
  2. Tools & Tips
Code

Mengembangkan Ekstensi Google Chrome

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Hasannudin Amin (you can also view the original English article)

Ini bukan rahasia lagi apabila perambang favorit saya adalah Google Chrome. Saya suka karena cepat, handal, tidak crash (sangat sering), dan tampilannya bagus. Ada juga hal lain yang menurut saya lebih berharga. Ini adalah fakta bahwa Anda dapat membuat ekstensi untuknya hanya dengan menggunakan HTML, CSS, dan JavaScript. Saya selalu mendukung produk seperti itu, produk yang terbuka untuk komunitas dan Chrome kebetulan menjadi salah satu produk semacam ini. Jika Anda membutuhkan sesuatu dan belum diimplementasikan, Anda bebas mengembangkannya sendiri.

Jadi pada akhir artikel ini Anda akan menemukan ekstensi Chrome yang dapat bekerja, yang akan menggunakan sebagian besar teknik yang dijelaskan di bawah ini. Anda bisa mengunduh contoh hasil akhir dengan menggunakan tombol kode sumber download di bagian atas halaman ini.


Mengapa Anda Harus Menulis Ekstensi Anda Sendiri?

Saya selalu mendorong orang-orang untuk menggunakan alat yang lebih baik untuk mempercepat alur kerja. Perangkat lunak yang kita gunakan seharusnya membantu kita, dan kita seharusnya tidak harus bertarung dengannya. Mengembangkan ekstensi / plugin untuk editor atau browser favorit Anda tidak hanya membantu Anda, tapi juga pemrogram lain, yang cepat atau lambat akan berada dalam situasi yang sama. Jika ada yang hilang, Anda bisa membuatnya sendiri dan dengan Chrome ini sangat mudah. Pemodelan lingkungan sekitar kebutuhan Anda adalah kunci untuk menjadi sangat produktif.


Mengembangkan & Menguji Ekstensi Anda

Untungnya ada cara untuk menguji ekstensi Anda tanpa harus mengunggahnya toko web Chrome. Di address bar peramban Anda, ketik saja:

Pastikan Anda mencentang Developer mode dan klik tombol Load unpacked extension.... Kemudian cukup pilih folder dari harddisk Anda yang berisi berkas ekstensi.

extensionspanel

Arsitektur

Berikut diagram arsitektur untuk ekstensi Chrome:

architecture

Dan sekarang mari kita lihat lebih dekat setiap elemen dalam arsitektur.

Manifest

Titik masuk ekstensi Anda adalah berkas manifest.json. Ini harus berisi objek JSON yang valid. Sebagai contoh:

Properti yang dibutuhkan adalah name, version, dan manifest_version. version bisa di mana saja dari satu sampai empat, bilangan bulat yang dipisahkan titik. Ini adalah sesuatu yang digunakan oleh sistem autoupdate Google. Begitulah cara mengetahui kapan untuk memperbarui ekstensi Anda. Isi dari manifest_version haruslah bilangan bulat 2.

Manifest bisa berisi properti lain tergantung pada jenis ekstensi yang Anda butuhkan, tapi saya akan menjelaskan hanya yang saya anggap cukup menarik.

Halaman Background

Setiap ekstensi memiliki halaman background yang tak terlihat yang dijalankan oleh peramban. Ada dua jenis - halaman background persisten dan halaman event. Yang pertama aktif, sepanjang waktu. Yang kedua hanya aktif bila dibutuhkan. Google mendorong pengembang untuk menggunakan halaman event, karena ini menghemat memori dan meningkatkan keseluruhan kinerja peramban. Namun, ada baiknya untuk mengetahui bahwa ini juga mengharuskan Anda memasukkan logika dan inisialisasi utama Anda. Biasanya halaman/skrip background memainkan peran yang menjembatani antara bagian lain dari ekstensi.

Berikut adalah bagaimana Anda harus menjelaskannya di manifest:

Seperti yang telah Anda duga, jika properti persistent itu bernilai false maka Anda akan menggunakan halaman event. Jika tidak, Anda akan bekerja dengan halaman background yang persisten.

Content Script

Jika Anda memerlukan akses ke DOM laman saat ini, maka Anda harus menggunakan content script. Sebuah kode yang dijalankan dalam konteks halaman web saat ini, yang berarti akan dieksekusi dengan setiap refresh. Untuk menambahkan skrip seperti itu, gunakan sintaks berikut.

Ingatlah bahwa nilai dari matches menentukan halaman mana yang akan digunakan skrip Anda. Baca lebih lanjut tentang matches patterns di sini.

Antarmuka Pengguna

Ada beberapa cara untuk membangun UI ekstensi Anda. Inilah empat yang paling populer.

Browser Action

Sebagian besar pengembang menggunakan properti browser_action untuk membangun plugin mereka. Begitu Anda menyetelnya, ikon yang mewakili ekstensi Anda akan ditempatkan di sisi kanan bilah alamat. Pengguna kemudian bisa mengklik ikon dan membuka pop-up konten HTML yang sebenarnya Anda kontrol.

browseraction

Berkas manifest harus berisi data berikut:

default_title adalah tool tip yang ditunjukkan saat pengguna menyorot ikon Anda. default_popup sebenarnya adalah berkas HTML yang dimuatkan di dalam pop-up. Ada juga lencana yang bisa Anda tempatkan di atas ikon Anda. Anda bisa melakukannya di dalam background script Anda. Sebagai contoh:

Inilah kode yang saya gunakan untuk menghasilkan gambar di atas.

Page Action

Properti page_action mirip dengan browser action, namun ikon ditampilkan di dalam bilah alamat:

pageaction

Yang menarik di sini adalah bahwa ikon Anda awalnya tersembunyi, jadi Anda harus memutuskan kapan harus menunjukkannya. Sebagai contoh, pada gambar di atas, ikon RSS akan ditampilkan hanya jika halaman saat ini berisi link ke RSS feed. Jika Anda perlu menampilkan ikon Anda setiap saat, ada gunanya menggunakan browser_action secara langsung.

Untuk menambahkan page action, ketik kode berikut di dalam manifest Anda:

Berbeda dengan ikon browser action, ikon page action tidak memiliki lencana.

DeveloperTools

Saya sering menggunakan DeveloperTools dan Chrome menawarkan metode untuk menambahkan tab baru ke alat ini. Hal pertama yang harus Anda lakukan adalah menambahkan halaman HTML yang akan dimuat saat panel dibuka:

Tidak perlu meletakkan HTML di dalam halaman, kecuali untuk menautkan dalam berkas JavaScript, yang akan membuat tab:

Dan kemudian sertakan kode berikut di dalam berkas devtools.js:

Sekarang kode di atas akan menambahkan tab baru dengan nama TheNameOfYourExtension dan setelah Anda klik di atasnya, peramban akan memuat index.html di dalam DeveloperTools.

Omnibox

omnibox adalah kata kunci yang ditampilkan di dalam bilah alamat Chrome. Misalnya, jika Anda menambahkan properti berikut ke manifest Anda

Dan kemudian tambahkan kode di bawah ini, di dalam background script Anda:

Anda harus mengetik yeah di dalam bilah alamat. Maka Anda akan melihat sesuatu seperti ini:

omnibox

Menekan tab akan menghasilkan tampilan seperti berikut:

omnibox2

Tentu saja menggunakan API chrome.omnibox, Anda bisa menangkap masukan pengguna dan bereaksi terhadap masukan itu.

API

Ada banyak hal berbeda yang dapat Anda lakukan di ekstensi Anda. Misalnya, Anda bisa mendapatkan akses ke bookmark atau riwayat pengguna. Anda bisa bergerak, membuat tab atau bahkan mengubah ukuran jendela utama. Saya sangat menyarankan untuk melihat dokumentasi untuk mendapatkan gagasan yang lebih baik tentang bagaimana menyelesaikan tugas-tugas ini.

Apa yang seharusnya Anda ketahui adalah tidak semua API tersedia di setiap bagian ekstensi Anda. Misalnya, content script Anda tidak dapat mengakses chrome.devtools.panel atau skrip di tab DeveloperTools Anda tidak dapat membaca DOM laman. Jadi, jika Anda bertanya-tanya mengapa ada sesuatu yang tidak beres, ini bisa jadi alasannya.

Perpersanan

Seperti yang saya sebutkan di atas, Anda tidak selalu memiliki akses ke API yang ingin Anda gunakan. Jika demikian, maka sebaiknya Anda menggunakan pesan lewat. Ada dua jenis pesan - one-time requests dan long-lived connections.

One-Time Requests

Jenis komunikasi ini hanya terjadi satu kali. Contoh. Anda mengirim pesan dan menunggu jawaban. Misalnya, Anda bisa menempatkan kode berikut di background script Anda:

Kemudian gunakan kode dari bawah dalam content script Anda:

Dan inilah bagaimana Anda bisa mendapatkan informasi tentang DOM halaman ini dan menggunakannya di dalam background script Anda, yang biasanya tidak memiliki akses ke data ini.

Long-Lived Connections

Gunakan jenis pesan ini jika Anda memerlukan saluran komunikasi yang terus-menerus. Di dalam content script Anda tempatkan kode berikut ini:

Dan kemudian di background script, gunakan ini:

Override Pages

Overriding pages adalah cara yang bagus untuk menyesuaikan peramban Anda. Anda juga bisa mengganti beberapa halaman bawaan di Chrome. Misalnya Anda bisa membuat halaman riwayat sendiri. Untuk melakukannya, tambahkan cuplikan kode berikut:

Nilai yang memungkinkan dari <page to override> adalah bookmarks, history, dan newtab. Ini cukup keren untuk memiliki halaman new tab yang baru.


Contoh Ekstensi

Untuk menyelesaikan artikel ini saya memutuskan untuk menyertakan contoh sederhana, sehingga Anda bisa mendapatkan pemahaman yang lebih baik tentang keseluruhan gambar. Contoh ekstensi ini menggunakan sebagian besar hal yang saya jelaskan di atas untuk sekedar menetapkan warna latar belakang #F00 untuk semua div di halaman saat ini. Jangan ragu untuk mengunduh kode sumber menggunakan tombol di bagian atas artikel ini.

Berkas Manifest

Tentu saja saya memulai dengan berkas manifest:

Perlu diingat bahwa Anda dapat mengatur berkas Anda ke dalam folder. Juga, perhatikan properti version. Anda harus memperbarui properti ini setiap kali Anda ingin mengunggah ekstensi ke toko web.

Background Script

Beberapa baris pertama mendapatkan tindakan pengguna dari omnibox. Setelah itu, saya menetapkan one-time request listener, yang akan menerima pesan dari ikon browser action.

Potongan berikutnya adalah long-lived connection dengan tab devtools (tidak perlu menggunakan long-lived connection untuk hal ini, saya melakukannya hanya untuk tujuan pengajaran). Dengan menggunakan listener ini, saya bisa mendapatkan masukan dari pengguna dan mengirimkannya ke content script, yang memiliki akses ke elemen DOM. Intinya di sini adalah pertama pilih tab yang ingin saya manipulasi dan kemudian kirim pesan ke situ. Terakhir, saya meletakkan lencana pada ikon ekstensi.

Browser Action

Kita mulai dengan berkas popup.html kita:

Kemudian kita membuat berkas popup.js:

Pop-up berisi satu tombol dan sekali pengguna mengkliknya, ia akan mengirim pesan ke background script.

DeveloperTools

Untuk DeveloperTools, kita melakukan hal yang hampir sama seperti yang kita lakukan di pop-up, satu-satunya perbedaan adalah bahwa saya menggunakan koneksi lama.

Content Script

Content script mendengarkan pesan, memilih semua div pada halaman ini, dan mengubah warna latar belakangnya. Perhatikan obyek yang saya lampirkan pada listener. Di content script chrome.extension.onMessage.

Menyesuaikan Halaman New Tab

Hal terakhir yang dilakukan ekstensi ini adalah menyesuaikan halaman new tab. Kita bisa melakukannya dengan mudah hanya dengan mengarahkan properti newtab ke berkas newtab/newtab.html:

Ingatlah bahwa Anda tidak dapat membuat replika halaman bawaan new tab. Gagasan tentang fitur ini adalah menambahkan fungsionalitas yang berbeda secara total. Inilah yang dikatakan Google:

Jangan mencoba meniru halaman bawaan New Tab. API yang diperlukan untuk membuat versi modifikasi dari halaman bawaan New Tab - dengan halaman teratas, halaman yang baru ditutup, tip, gambar latar belakang tema, dan sebagainya - belum ada. Sampai mereka melakukannya, Anda lebih baik mencoba membuat sesuatu yang sama sekali berbeda.


Debugging

Menulis ekstensi untuk Google Chrome tidak selalu merupakan tugas yang mudah dan kemungkinan Anda akan mengalami beberapa masalah. Hal yang baik adalah Anda masih dapat menggunakan konsol untuk menampilkan variabel Anda untuk membantu debugging. Jangan ragu untuk menambahkan console.log ke dalam background atau content script. Namun ini tidak akan berfungsi dalam skrip yang dijalankan dalam konteks developer tools, sehingga Anda dapat mempertimbangkan untuk menggunakan metode alert, karena berfungsi di mana-mana.


Kesimpulan

Menurut pendapat saya, Chrome adalah salah satu peramban terbaik yang tersedia. Pengembang di Google membuat ekstensi yang mudah dibuat dengan mudah memberi kita kemampuan untuk membuatnya dalam HTML, CSS, dan JavaScript.

Ya, ada beberapa bagian yang rumit, tapi umumnya kita bisa menghasilkan plugin yang bernilai. Ingatlah bahwa artikel ini tidak mencakup segala hal yang berkaitan dengan pengembangan ekstensi. Ada beberapa hal berguna lainnya seperti menu konteks, halaman pilihan, dan notifikasi. Untuk topik yang tidak saya sampaikan, lihat dokumentasi untuk mendapatkan informasi lebih rinci.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.