Pertanyaan umum (FAQ)

Jika Anda tidak menemukan jawaban atas pertanyaan Anda di sini, coba FAQ Chrome Web Store, tag [google-chrome-extension] di Stack Overflow, grup chromium-extensions, atau bantuan toko.

Umum

Apa yang dimaksud dengan ekstensi Google Chrome?

Ekstensi Google Chrome adalah aplikasi yang berjalan di dalam browser Chrome dan memberikan fungsi tambahan, integrasi dengan situs atau layanan pihak ketiga, dan pengalaman penjelajahan yang disesuaikan.

Bagaimana cara menyiapkan Chrome untuk pengembangan ekstensi?

Selama menggunakan versi Chrome yang mendukung ekstensi, Anda sudah memiliki semua yang diperlukan untuk mulai menulis ekstensi Anda sendiri. Anda dapat memulai dengan mengaktifkan Mode developer.

Klik ikon menu Chrome dan pilih Ekstensi dari menu Alat. Pastikan kotak "Mode developer" di sudut kanan atas dicentang. Sekarang Anda dapat memuat ulang ekstensi, memuat direktori file yang belum diekstrak seolah-olah itu adalah ekstensi yang dipaketkan, dan lainnya. Untuk tutorial lengkap, lihat Memulai.

Teknologi apa yang digunakan untuk menulis ekstensi untuk Chrome?

Ekstensi ditulis menggunakan teknologi web standar yang sama dengan yang digunakan developer untuk membuat situs. HTML digunakan sebagai bahasa markup konten, CSS digunakan untuk penataan gaya, dan JavaScript untuk pembuatan skrip. Karena Chrome mendukung HTML5 dan CSS3, developer dapat menggunakan teknologi web terbuka terbaru seperti animasi kanvas dan CSS di ekstensi mereka. Ekstensi juga memiliki akses ke beberapa JavaScript API yang membantu menjalankan fungsi seperti encoding JSON dan berinteraksi dengan browser.

Apakah ekstensi diambil dari web setiap kali browser dimuat?

Ekstensi didownload oleh browser Chrome setelah diinstal, dan selanjutnya dijalankan dari disk lokal untuk mempercepat performa. Namun, jika versi baru ekstensi didorong ke internet, ekstensi tersebut akan otomatis didownload di latar belakang kepada pengguna yang telah menginstal ekstensi. Ekstensi juga dapat membuat permintaan untuk konten jarak jauh kapan saja, untuk berinteraksi dengan layanan web atau menarik konten baru dari web.

Bagaimana cara mengetahui versi Chrome yang di-deploy ke saluran mana?

Untuk menentukan versi Chrome yang saat ini tersedia di setiap platform yang berbeda, kunjungi omahaproxy.appspot.com. Di situs tersebut, Anda akan melihat data dalam format yang mirip dengan:

cf,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,canary,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####

Setiap baris mewakili informasi tentang kombinasi platform dan saluran yang berbeda. Platform yang tercantum adalah cf (Google Chrome Frame), linux, mac, win, dan cros (Google ChromeOS). Saluran yang tercantum adalah canary, dev, beta, dan stable. Dua angka empat bagian setelah saluran mewakili Chrome versi saat ini dan sebelumnya yang di-deploy ke kombinasi saluran platform tersebut. Informasi lainnya adalah metadata tentang kapan rilis pertama kali dikirim, serta nomor revisi yang terkait dengan setiap build.

Kemampuan

Dapatkah ekstensi membuat permintaan Ajax lintas-domain?

Ya. Ekstensi dapat membuat permintaan lintas-domain. Lihat halaman ini untuk mengetahui informasi selengkapnya.

Dapatkah ekstensi menggunakan layanan web pihak ketiga?

Ya. Ekstensi mampu membuat permintaan Ajax lintas-domain, sehingga dapat memanggil API jarak jauh secara langsung. API yang menyediakan data dalam format JSON sangat mudah digunakan.

Dapatkah ekstensi mengenkode/mendekode data JSON?

Ya, karena V8 (mesin JavaScript Chrome) mendukung JSON.stringify dan JSON.parse secara native, Anda dapat menggunakan fungsi ini dalam ekstensi seperti yang dijelaskan di sini tanpa menyertakan library JSON tambahan dalam kode Anda.

Bisakah ekstensi menyimpan data secara lokal?

Ya, ekstensi dapat menggunakan localStorage untuk menyimpan data string secara permanen. Dengan menggunakan fungsi JSON bawaan Chrome, Anda dapat menyimpan struktur data yang kompleks di localStorage. Untuk ekstensi yang perlu menjalankan kueri SQL pada data yang tersimpan, Chrome akan mengimplementasikan database SQL sisi klien, yang juga dapat digunakan.

Dapatkah ekstensi menggunakan OAuth?

Ya, ada ekstensi yang menggunakan OAuth untuk mengakses API data jarak jauh. Sebagian besar developer merasa mudah menggunakan library OAuth JavaScript untuk menyederhanakan proses penandatanganan permintaan OAuth.

Dapatkah ekstensi membuat UI di luar halaman web yang dirender?

Ya, ekstensi Anda dapat menambahkan tombol ke antarmuka pengguna browser Chrome. Lihat tindakan browser dan tindakan halaman untuk informasi selengkapnya.

Ekstensi juga dapat membuat notifikasi pop-up, yang berada di luar jendela browser. Lihat dokumentasi notifikasi desktop untuk detail selengkapnya.

Dapatkah ekstensi mendengarkan klik pada tab Chrome dan tombol navigasi?

Tidak. Ekstensi hanya dapat memproses peristiwa yang dijelaskan dalam dokumentasi API.

Dapatkah dua ekstensi saling berkomunikasi?

Ya, ekstensi dapat meneruskan pesan ke ekstensi lain. Lihat dokumentasi penerusan pesan untuk mengetahui informasi selengkapnya.

Dapatkah ekstensi menggunakan Google Analytics?

Ya, karena ekstensi dibuat seperti situs, ekstensi tersebut dapat menggunakan Google Analytics untuk melacak penggunaan. Namun, Anda harus mengubah kode pelacakan untuk mengambil versi HTTPS library Google Analytics. Lihat tutorial ini untuk informasi selengkapnya tentang cara melakukannya.

Dapatkah ekstensi mengubah URL chrome://?

Tidak. API ekstensi telah dirancang untuk meminimalkan masalah kompatibilitas mundur yang dapat muncul saat versi baru browser didorong. Mengizinkan skrip konten di URL chrome:// berarti developer akan mulai mengandalkan DOM, CSS, dan JavaScript dari halaman ini agar tetap sama. Dalam kasus terbaik, halaman ini tidak dapat diperbarui secepat diperbarui sekarang. Dalam kasus terburuk, update pada salah satu halaman ini dapat menyebabkan ekstensi rusak, yang menyebabkan bagian penting dari browser berhenti berfungsi untuk pengguna ekstensi tersebut.

Alasan mengganti konten yang dihosting di URL ini sepenuhnya diizinkan karena hal itu memaksa developer ekstensi untuk mengimplementasikan semua fungsi yang diinginkan tanpa bergantung pada implementasi internal browser agar tetap sama.

Dapatkah ekstensi membuka pop-up tindakan browser/halaman tanpa interaksi pengguna?

Tidak, pop-up hanya dapat dibuka jika pengguna mengklik halaman atau tindakan browser yang sesuai. Ekstensi tidak dapat membuka pop-up secara terprogram.

Dapatkah ekstensi tetap membuka pop-up setelah pengguna mengkliknya?

Tidak, pop-up akan otomatis ditutup saat pengguna berfokus pada beberapa bagian browser di luar popup tersebut. Tidak ada cara untuk tetap membuka pop-up setelah pengguna mengklik.

Apakah ekstensi dapat menerima notifikasi saat diinstal/di-uninstal?

Anda dapat memproses peristiwa runtime.onInstalled agar mendapatkan notifikasi saat ekstensi diinstal atau diupdate, atau saat Chrome diupdate. Tidak ada peristiwa yang sesuai saat ekstensi Anda di-uninstal.

Pengembangan

Bagaimana cara membuat UI untuk ekstensi saya?

Ekstensi menggunakan HTML dan CSS untuk menentukan antarmuka penggunanya, sehingga Anda dapat menggunakan kontrol formulir standar untuk mem-build UI, atau menata gaya antarmuka dengan CSS, seperti yang Anda lakukan pada halaman web. Selain itu, ekstensi dapat menambahkan beberapa elemen UI terbatas ke Chrome itu sendiri.

Berapa banyak data yang dapat saya simpan di localStorage?

Ekstensi dapat menyimpan hingga 5 MB data di localStorage.

Bagaimana cara membuat menu opsi untuk aplikasi saya?

Anda dapat mengizinkan pengguna menetapkan opsi untuk ekstensi Anda dengan membuat halaman opsi, yaitu halaman HTML sederhana yang akan dimuat saat pengguna mengklik tombol "opsi" untuk ekstensi Anda. Halaman ini dapat membaca dan menulis setelan ke localStorage, atau bahkan mengirim opsi ke server web agar dapat dipertahankan di seluruh browser.

Alat proses debug apa yang tersedia untuk developer ekstensi?

Developer Tools bawaan Chrome dapat digunakan untuk men-debug ekstensi serta halaman web. Lihat tutorial tentang men-debug ekstensi ini untuk mengetahui informasi selengkapnya.

Mengapa pencocokan karakter pengganti tidak berfungsi untuk domain level teratas (TLD)?

Anda tidak dapat menggunakan pola pencocokan karakter pengganti seperti http://google.*/* untuk mencocokkan TLD (seperti http://google.es dan http://google.fr) karena kerumitan sebenarnya membatasi kecocokan tersebut hanya untuk domain yang diinginkan.

Untuk contoh http://google.*/*, domain Google akan dicocokkan, tetapi begitu juga dengan http://google.someotherdomain.com. Selain itu, banyak situs yang tidak memiliki semua TLD untuk domain mereka. Misalnya, Anda ingin menggunakan http://example.*/* untuk mencocokkan http://example.com dan http://example.es, tetapi http://example.net adalah situs yang berbahaya. Jika ekstensi Anda memiliki bug, situs yang tidak aman berpotensi menyerang ekstensi Anda untuk mendapatkan akses ke peningkatan hak istimewa ekstensi Anda.

Anda harus secara eksplisit menghitung TLD yang ingin Anda jalankan ekstensinya.

Mengapa API pengelolaan tidak mengaktifkan peristiwa saat ekstensi saya diinstal/di-uninstal?

Management API ditujukan untuk membantu membuat ekstensi pengganti halaman tab baru. Fitur ini tidak dimaksudkan untuk memicu peristiwa instal/uninstal untuk ekstensi saat ini.

Bagaimana cara ekstensi menentukan apakah ekstensi tersebut berjalan untuk pertama kalinya?

Anda dapat memproses peristiwa runtime.onInstalled. Lihat entri FAQ ini.

Fitur dan bug

Sepertinya aku menemukan serangga! Bagaimana cara memastikan masalah teratasi?

Saat mengembangkan ekstensi, Anda mungkin menemukan perilaku yang tidak cocok dengan dokumentasi ekstensi dan mungkin disebabkan oleh bug di Chrome. Hal terbaik yang dapat dilakukan adalah memastikan laporan masalah yang sesuai telah dikirimkan, dan tim Chromium memiliki cukup informasi untuk mereproduksi perilaku tersebut.

Langkah-langkah yang harus Anda ikuti untuk memastikannya adalah:

  1. Siapkan ekstensi pengujian minimal yang mendemonstrasikan masalah yang ingin Anda laporkan. Ekstensi ini harus memiliki sesedikit mungkin kode untuk menunjukkan bug tersebut—umumnya harus terdiri dari 100 baris kode atau kurang. Sering kali, developer tidak dapat mereproduksi masalahnya dengan cara ini, yang merupakan indikator yang baik bahwa bug berada dalam kodenya sendiri.
  2. Telusuri issue tracker di http://crbug.com untuk melihat apakah seseorang telah melaporkan masalah yang serupa. Sebagian besar masalah terkait ekstensi dilaporkan di bagian component=Platform>Extensions, jadi untuk mencari bug ekstensi yang terkait dengan fungsi chrome.tabs.executeScript (misalnya), telusuri "component=Platform>Extensions Type=Bug chrome.tabs.executeScript", yang akan memberi Anda daftar hasil ini.
  3. Jika Anda menemukan bug yang mendeskripsikan masalah, klik ikon bintang untuk diberi tahu saat bug menerima update. Jangan menanggapi bug dengan mengucapkan "saya juga" atau bertanya "kapan masalah ini akan diperbaiki?"; update seperti itu dapat menyebabkan ratusan email dikirim. Tambahkan komentar hanya jika Anda memiliki informasi (misalnya kasus pengujian yang lebih baik atau saran perbaikan) yang mungkin bermanfaat.
  4. Jika Anda tidak menemukan bug yang sesuai untuk dibintangi, ajukan laporan masalah baru di http://crbug.com/new. Jelaskan sejelas mungkin saat mengisi formulir ini: pilih judul yang deskriptif, jelaskan langkah-langkah untuk mereproduksi bug, serta deskripsikan perilaku yang diharapkan dan yang sebenarnya. Lampirkan contoh pengujian Anda ke laporan dan tambahkan screenshot jika sesuai. Semakin mudah laporan Anda memudahkan orang lain mereproduksi masalah, semakin besar kemungkinan bug akan segera diperbaiki.
  5. Tunggu hingga bug diupdate. Sebagian besar bug baru diprioritaskan dalam waktu satu minggu, meskipun terkadang memerlukan waktu lebih lama untuk suatu update. Jangan membalas bug untuk bertanya kapan masalah akan diperbaiki. Jika bug belum diubah setelah dua minggu, posting pesan ke grup diskusi dengan link kembali ke bug Anda.
  6. Jika awalnya Anda melaporkan bug di grup diskusi dan diarahkan ke entri FAQ ini, balas rangkaian pesan asli dengan link ke bug yang Anda bintangi atau laporkan. Tindakan ini akan memudahkan orang lain yang mengalami masalah yang sama untuk menemukan bug yang tepat.

Aku punya permintaan fitur! Bagaimana cara melaporkannya?

Jika Anda mengidentifikasi fitur (terutama jika terkait dengan API eksperimental) yang dapat ditambahkan untuk meningkatkan pengalaman pengembangan ekstensi, pastikan permintaan yang sesuai diajukan di issue tracker.

Langkah-langkah yang harus Anda ikuti untuk memastikannya adalah:

  1. Telusuri issue tracker di http://crbug.com untuk melihat apakah seseorang telah meminta fitur serupa. Sebagian besar permintaan yang terkait dengan ekstensi diajukan di bagian component=Platform>Extensions, jadi untuk mencari permintaan fitur ekstensi yang terkait dengan pintasan keyboard (misalnya), telusuri "component=Platform>Extensions Type=Feature shortcuts", yang akan memberi Anda daftar hasil ini.
  2. Jika Anda menemukan tiket yang cocok dengan permintaan Anda, klik ikon bintang untuk diberi tahu saat bug menerima update. Jangan menanggapi bug dengan mengucapkan "saya juga" atau bertanya "kapan fitur ini akan diterapkan?"; update seperti itu dapat menyebabkan ratusan email dikirim.
  3. Jika Anda tidak menemukan tiket yang sesuai untuk dibintangi, ajukan permintaan baru di http://crbug.com/new. Jelaskan sedetail mungkin saat mengisi formulir ini: pilih judul yang deskriptif dan jelaskan sebenarnya fitur yang Anda inginkan dan rencana penggunaannya.
  4. Tunggu hingga tiket diperbarui. Sebagian besar permintaan baru akan diprioritaskan dalam waktu satu minggu, meskipun terkadang perlu waktu lebih lama untuk suatu update. Jangan membalas tiket untuk bertanya kapan fitur akan ditambahkan. Jika tiket Anda belum diubah setelah dua minggu, posting pesan ke grup diskusi yang berisi link kembali ke permintaan Anda.
  5. Jika awalnya Anda melaporkan permintaan pada grup diskusi dan diarahkan ke entri FAQ ini, balas rangkaian pesan awal dengan menyertakan link ke tiket yang Anda bintangi atau buka. Hal ini akan memudahkan pengguna lain yang mengajukan permintaan yang sama untuk menemukan tiket yang tepat.