Anda dapat membaca lebih lanjut tentang ini di sini.
Swift Selection Search (SSS) adalah add-on Firefox untuk dengan cepat mencari beberapa teks di halaman menggunakan mesin pencari favorit Anda.
Pilih teks pada halaman dan kotak popup kecil dengan mesin pencari akan muncul di atas kursor Anda. Tekan satu dan Anda akan secara otomatis mencari teks yang dipilih menggunakan mesin itu!
SSS dapat dikonfigurasi. Anda dapat menentukan mesin pencari mana yang muncul di sembulan, penampilan ikon, apa yang terjadi ketika Anda mengkliknya, di mana popup muncul, apakah akan menyembunyikannya atau tidak ketika halaman menggulir, jika Anda ingin secara otomatis menyalin teks pada pemilihan, dan banyak lagi opsi.
Anda juga mendapatkan menu konteks opsional untuk mencari dengan mesin Anda. Anda dapat menonaktifkan menu tambahan ini di opsi jika Anda mau. Anda juga memiliki opsi untuk menonaktifkan popup itu sendiri dan hanya menyisakan menu konteks ini. Pilihan Anda. :)
SSS tersedia di situs web Add-On Mozilla, di sini:
https://addons.mozilla.org/firefox/addon/swift-selection-search
Pertama, karena webextensions dibuat dalam JavaScript, kita harus dapat mengonversi naskah menjadi JavaScript, lebih disukai dengan cara yang otomatis mungkin.
Instal NPM . Unduh node.js dari https://nodejs.org dan Anda akan mendapatkan NPM di sampingnya.
Di folder proyek, jalankan ini di baris perintah:
Instal NPM
Ini akan menginstal dependensi naskah proyek secara lokal di folder node_modules .
Untuk mentranspile semua skrip .ts ke .js (di windows):
"node_modules/.bin/tsc.cmd" --watch -p tsconfig.json
Perintah akan tetap hidup dan secara otomatis mengubah kembali kode setelah perubahan file .ts, yang berguna saat berkembang.
Sekarang Anda memiliki file .js, sehingga Anda dapat menggunakan SSS sebagai webextension. Yay!
Untuk pengembangan singkat atau hanya keingintahuan, cara yang lebih sederhana untuk mencoba SSS adalah tentang: debugging#addons halaman di Firefox. Tekan tombol "Muat add-on sementara", pilih file dalam direktori "SRC" Pilihan Seleksi Swift (misalnya manifest.json ), dan itu akan memuat add-on sampai browser ditutup. Perubahan ke sebagian besar kode memerlukan pemuatan ulang add-on lagi.
Untuk pengembangan dan/atau pengemasan yang lebih lama, seperti pemuatan ulang otomatis setelah setiap perubahan, silakan ikuti instruksi Mozilla di sini untuk menginstal dan menggunakan alat web-ext .
Gabungkan repositori di github dan klon ke komputer Anda.
Ikuti instruksi di atas untuk cara membangun .
Pada akhirnya Anda harus memiliki skrip yang secara otomatis mentranspasi kode dari naskah ke JavaScript, dan harus tahu cara menjalankan versi SSS Anda di Firefox.
Pelajari bahwa SSS memiliki 3 cabang utama:
Baca pedoman kode di bawah ini.
Temukan masalah yang ingin Anda selesaikan dalam daftar masalah.
Tanyakan apakah ada yang sudah mengerjakannya. Selain itu, jika tidak ada detail tentang cara menerapkan atau jika Anda ingin mengetahui kemungkinan pendekatan, jangan ragu untuk bertanya!
Buat cabang git baru untuk fitur baru atau perbaikan bug yang Anda coba terapkan. Buat cabang ini dari "kembangkan", untuk menyederhanakan penggabungan nanti (karena "master" mungkin tidak memiliki semua perubahan saat ini).
Menerapkan dan melakukan/dorong perubahan ke cabang, mungkin dalam beberapa komitmen.
Akhirnya buat permintaan tarik untuk menggabungkan perubahan Anda ke repositori asli. Ini akan tunduk pada tinjauan kode, diskusi dan mungkin berubah jika diperlukan.
Terima kasih!
SSS diangkut di beberapa titik dari JavaScript ke TypeScript untuk mendapatkan manfaat dari anotasi jenis, karena banyak kesalahan dapat ditangkap oleh pemeriksa tipe. Namun, perlu dicatat bahwa interaksi WebExtensions dengan TypeScript paling rewel, karena TypeScript mengasumsikan bahwa skrip dapat mengimpor kode/data dari skrip lain, padahal pada kenyataannya lingkungan WebExtensions memiliki kotak pasir dan jarang memungkinkan itu.
Skrip konten tidak melihat kode dari skrip latar belakang, atau sebaliknya, dan satu-satunya cara beberapa skrip konten bahkan dapat melihat kode satu sama lain adalah jika semuanya disuntikkan pada halaman yang sama dengan skrip latar belakang, mirip dengan bagaimana mereka akan jika mereka dimasukkan dalam halaman HTML sebagai skrip. TypeScript tidak tahu bahwa ini adalah cara kerja webextensions, jadi hanya karena sesuatu transpiles ke javascript dengan benar itu tidak berarti webextension akan berfungsi.
Contoh yang berhasil adalah bahwa kita dapat mendeklarasikan jenis/kelas dalam skrip latar belakang dan merujuknya di skrip lain, karena hanya tipe pemeriksa yang peduli tentang mereka. Kami mendapatkan jenis pemeriksaan dan tidak apa -apa.
Namun, jika kami mencoba menambahkan ke kelas -kelas tersebut beberapa metode, tugas variabel, dll, maka skrip konten atau skrip halaman opsi tidak akan melihat ini. Saat mentranspiling ke JavaScript, mereka akan dibiarkan sebagai referensi ke kode dalam skrip lain, yang tidak dapat direferensikan saat runtime karena webextensions sandboxing. Ini juga berlaku untuk enum (yang memiliki nilai konkret, jadi "data") kecuali kami mendeklarasikannya sebagai const enum , dalam hal ini naskah menyalin nilai -nilai mereka ke tempat mereka digunakan alih -alih membuat objek JavaScript.
Jadi, jika Anda melihat kelas sepenuhnya atau sebagian dideklarasikan dalam lebih dari satu skrip dalam proyek ini (misalnya dalam skrip latar belakang dan skrip halaman), di atas adalah alasannya.
Hal lain yang mungkin gagal adalah menggunakan instanceof untuk memeriksa apakah suatu objek adalah kelas tertentu. Jangan lakukan ini untuk kelas yang dibuat khusus karena mungkin gagal karena kotak pasir.