Pertanyaan umum (FAQ)

Jika 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 app store.

Umum

Apa yang dimaksud dengan ekstensi Google Chrome?

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

Bagaimana cara menyiapkan Chrome untuk pengembangan ekstensi?

Selama Anda menggunakan versi Chrome yang mendukung ekstensi, Anda sudah memiliki semuanya Anda harus mulai menulis ekstensi Anda sendiri. Anda dapat memulainya dengan mengaktifkan mode Developer.

Klik ikon menu Chrome dan pilih Ekstensi dari menu Alat. Pastikan bahwa "Mode pengembang" di sudut kanan atas telah dicentang. Sekarang Anda dapat memuat ulang ekstensi file, memuat direktori file yang belum dipaketkan seolah-olah itu adalah ekstensi terpaket, dan banyak lagi. Untuk menyelesaikan tutorial, lihat Memulai.

Teknologi apa yang digunakan untuk menulis ekstensi bagi Chrome?

Ekstensi ditulis menggunakan teknologi web standar yang sama dengan yang digunakan developer untuk membuat situs web. 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 web terbuka terbaru teknologi seperti kanvas dan animasi CSS dalam ekstensinya. Ekstensi juga memiliki akses ke beberapa JavaScript API yang membantu menjalankan fungsi seperti encoding JSON dan interaksi dengan browser.

Apakah ekstensi diambil dari web setiap kali browser dimuat?

Ekstensi didownload oleh browser Chrome setelah penginstalan, lalu dijalankan dari {i>disk<i} lokal untuk mempercepat kinerja. Namun, jika versi baru ekstensi dikirim secara online, file akan diunduh secara otomatis di latar belakang bagi setiap pengguna yang memiliki ekstensi terinstal. Ekstensi juga dapat membuat permintaan untuk konten jarak jauh kapan saja, guna berinteraksi dengan layanan web atau menarik isi baru dari web.

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

Untuk menentukan versi Chrome mana 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 merepresentasikan informasi tentang kombinasi platform dan saluran yang berbeda. Daftar platformnya adalah cf (Google Chrome Frame), linux, mac, win, dan cros (Google ChromeOS). Tujuan saluran yang tercantum adalah canary, dev, beta, dan stable. Dua angka empat bagian setelah mewakili Chrome versi saat ini dan sebelumnya yang di-deploy ke saluran platform tersebut kombinasi. Informasi lainnya adalah metadata tentang kapan rilis pertama kali diluncurkan, serta nomor revisi yang terkait dengan setiap build.

Kemampuan

Dapatkah ekstensi membuat permintaan Ajax lintas-domain?

Ya. Ekstensi dapat membuat permintaan lintas-domain. Baca 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 di ekstensi Anda seperti yang dijelaskan di sini tanpa menyertakan Library JSON dalam kode Anda.

Dapatkah ekstensi menyimpan data secara lokal?

Ya, ekstensi dapat menggunakan localStorage untuk menyimpan data string secara permanen. Menggunakan Dengan fungsi JSON, Anda dapat menyimpan struktur data yang kompleks di localStorage. Untuk ekstensi yang perlu mengeksekusi kueri SQL pada data yang disimpan, Chrome menerapkan database SQL sisi klien, yang mungkin digunakan juga.

Dapatkah ekstensi menggunakan OAuth?

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

Dapatkah ekstensi membuat UI di luar halaman web yang dirender?

Ya, ekstensi Anda dapat menambahkan tombol ke antarmuka pengguna browser Chrome. Lihat browser tindakan 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 dibatasi hanya untuk memproses peristiwa yang dijelaskan dalam dokumentasi API.

Dapatkah dua ekstensi berkomunikasi satu sama lain?

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

Dapatkah ekstensi menggunakan Google Analytics?

Ya, karena ekstensi dibuat seperti halnya situs, ekstensi dapat menggunakan Google Analytics untuk melacak tingkat penggunaan. Namun, Anda harus mengubah kode pelacakan untuk mengambil versi HTTPS Google Analytics library. 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 browser versi baru diluncurkan. Mengizinkan skrip konten di chrome:// URL akan berarti bahwa developer akan mulai mengandalkan DOM, CSS, dan JavaScript dari halaman-halaman ini agar tetap sama. Dalam kasus terbaiknya, halaman tersebut tidak dapat diperbarui secepat diperbarui saat ini. Dalam kasus terburuk, pembaruan pada salah satu halaman ini dapat menyebabkan ekstensi rusak, yang menyebabkan bagian penting browser berhenti berfungsi bagi pengguna ekstensi tersebut.

Alasan menggantikan konten yang dihosting di URL ini sepenuhnya diperbolehkan adalah karena memaksa pengembang ekstensi untuk mengimplementasikan semua fungsi yang mereka inginkan tanpa bergantung pada implementasi internal {i>browser<i} 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. Channel ekstensi tidak dapat membuka pop-up-nya secara terprogram.

Dapatkah ekstensi tetap membuka pop-up setelah pengguna menutupnya?

Tidak, pop-up otomatis ditutup ketika pengguna fokus pada beberapa bagian browser di luar jendela pop-up. Tidak ada cara untuk membiarkan pop-up terbuka setelah pengguna mengklik.

Apakah ekstensi dapat diberi tahu saat diinstal/di-uninstal?

Anda dapat memproses peristiwa runtime.onInstalled agar mendapatkan notifikasi saat ekstensi Anda diinstal atau diupdate, atau saat Chrome diupdate. Tidak ada peristiwa yang sesuai untuk waktu 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 membangun 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, yang merupakan halaman HTML sederhana yang akan dimuat saat pengguna mengklik "options" untuk ekstensi Anda. Halaman ini dapat membaca dan menulis pengaturan ke localStorage, atau bahkan mengirim opsi ke server web sehingga kunci tersebut dapat dipertahankan di seluruh browser.

Alat proses debug apa yang tersedia untuk developer ekstensi?

Alat developer bawaan Chrome dapat digunakan untuk men-debug ekstensi serta halaman web. Lihat ini tutorial tentang ekstensi proses debug untuk 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 kompleksitas untuk benar-benar membatasi dicocokkan hanya dengan domain yang diinginkan.

Untuk contoh http://google.*/*, domain Google akan dicocokkan, tetapi begitu juga http://google.someotherdomain.com. Selain itu, banyak situs tidak memiliki semua TLD untuk {i>Directory<i} Sebagai contoh, asumsikan Anda ingin menggunakan http://example.*/* untuk mencocokkan http://example.com dan http://example.es, tetapi http://example.net adalah situs yang tidak aman. Jika ekstensi Anda memiliki {i>bug<i}, situs yang berbahaya berpotensi menyerang ekstensi Anda untuk mendapatkan akses ke hak istimewa yang meningkat.

Anda harus secara eksplisit menyebutkan TLD tempat ekstensi ingin dijalankan.

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

Management API ditujukan untuk membantu membuat ekstensi pengganti halaman tab baru. Tidak yang dimaksudkan untuk mengaktifkan peristiwa instal/uninstal untuk ekstensi saat ini.

Bagaimana cara ekstensi menentukan apakah ekstensi berjalan untuk pertama kalinya?

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

Fitur dan bug

Sepertinya aku menemukan serangga! Bagaimana cara memastikan bahwa masalah tersebut telah diperbaiki?

Saat mengembangkan ekstensi, Anda mungkin menemukan perilaku yang tidak cocok dengan ekstensi dokumentasi dan mungkin diakibatkan oleh bug di Chrome. Hal terbaik yang harus dilakukan adalah memastikan bahwa laporan masalah yang sesuai telah diajukan, dan tim Chromium memiliki informasi yang memadai untuk mereproduksi perilaku model.

Langkah-langkah yang harus Anda ikuti untuk memastikan hal ini:

  1. Siapkan ekstensi pengujian minimal yang menunjukkan masalah yang ingin Anda laporkan. Ini harus memiliki kode sesedikit mungkin untuk mendemonstrasikan {i>bug<i}—umumnya 100 baris kode atau kurang. Sering kali, developer mendapati bahwa mereka tidak dapat mereproduksi masalah dengan cara ini, yang merupakan indikator yang baik bahwa {i>bug<i} berada dalam kodenya sendiri.
  2. Telusuri pelacak masalah di http://crbug.com untuk melihat apakah seseorang telah melaporkan masalah yang serupa masalah performa. Sebagian besar masalah yang terkait dengan ekstensi diajukan di component=Platform&gt;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 memberikan Anda daftar hasil ini.
  3. Jika menemukan bug yang menjelaskan masalah Anda, klik ikon bintang untuk mendapatkan pemberitahuan saat bug menerima pembaruan. Jangan menanggapi bug dengan mengucapkan "saya juga" atau tanyakan "kapan ini akan diperbaiki?"; pembaruan tersebut dapat menyebabkan ratusan email yang dikirim. Tambahkan komentar hanya jika Anda memiliki (seperti kasus pengujian yang lebih baik atau perbaikan yang disarankan) yang mungkin akan membantu.
  4. Jika Anda tidak menemukan bug yang sesuai untuk dibintangi, ajukan laporan masalah baru di http://crbug.com/new. Bersikaplah sejelas mungkin saat mengisi formulir ini: pilih judul yang deskriptif, jelaskan langkah untuk mereproduksi bug, dan mendeskripsikan perilaku yang diharapkan dan yang sebenarnya. Lampirkan pengujian Anda contoh untuk laporan dan menambahkan screenshot jika perlu. Semakin mudah laporan Anda orang lain untuk mereproduksi masalah Anda, makin besar kemungkinan bug Anda segera diperbaiki.
  5. Tunggu sampai bug diperbarui. Sebagian besar {i>bug<i} baru diurutkan dalam waktu seminggu, meskipun dapat terkadang memerlukan waktu lebih lama untuk pembaruan. Jangan balas bug untuk bertanya kapan masalah akan muncul diperbaiki. Jika bug Anda belum diubah setelah dua minggu, posting pesan ke grup diskusi dengan link kembali ke bug Anda.
  6. Jika awalnya Anda melaporkan {i>bug<i} di grup diskusi dan diarahkan ke entri FAQ ini, balas rangkaian pesan asli Anda dengan link ke bug yang Anda bintangi atau laporkan. Ini akan membuatnya lebih mudah bagi orang lain yang mengalami masalah yang sama untuk menemukan {i>bug<i} yang tepat.

Aku punya permintaan fitur. Bagaimana cara melaporkannya?

Jika Anda mengidentifikasi fitur (terutama jika terkait dengan API eksperimental) yang dapat ditambahkan ke meningkatkan pengalaman pengembangan ekstensi, pastikan permintaan yang sesuai diajukan dalam masalah pelacak.

Langkah-langkah yang harus Anda ikuti untuk memastikan hal ini:

  1. Telusuri pelacak masalah di http://crbug.com untuk melihat apakah seseorang telah meminta fitur serupa. Sebagian besar permintaan yang terkait dengan ekstensi diajukan dalam component=Platform&gt;Extensions, jadi untuk mencari permintaan fitur ekstensi yang terkait dengan pintasan {i>keyboard<i} (misalnya), cari "component=Platform>Extensions Type=Feature shortcuts", yang akan memberi Anda daftar hasil.
  2. Jika Anda menemukan tiket yang cocok dengan permintaan Anda, klik ikon bintang untuk diberi tahu saat bug terjadi menerima pembaruan. Jangan menanggapi bug dengan mengucapkan "saya juga" atau tanyakan "kapan ini akan implemented?&quot;; pembaruan tersebut dapat menyebabkan ratusan email yang dikirim.
  3. Jika Anda tidak menemukan tiket yang sesuai untuk dibintangi, ajukan permintaan baru di http://crbug.com/new. Menjadi sedetail mungkin saat mengisi formulir ini: pilih judul deskriptif dan jelaskan fitur apa yang Anda inginkan dan bagaimana Anda berencana menggunakannya.
  4. Tunggu hingga tiket diperbarui. Sebagian besar permintaan baru diurutkan dalam waktu seminggu, meskipun juga dapat terkadang memerlukan waktu lebih lama untuk pembaruan. Jangan balas tiket untuk bertanya kapan fitur ini akan tersedia ditambahkan. Jika tiket Anda belum diubah setelah dua minggu, posting pesan ke grup diskusi dengan link kembali ke permintaan Anda.
  5. Jika Anda awalnya melaporkan permintaan Anda di grup diskusi dan diarahkan ke FAQ ini entri, balas rangkaian pesan asli Anda dengan tautan ke tiket yang Anda bintangi atau buka. Hal ini akan memudahkan orang lain dengan permintaan yang sama untuk menemukan tiket yang benar.