Maafkan saya jika ini dijawab di suatu tempat, tetapi saya tidak dapat menemukannya di FAQ atau README.
Saya menjalankan situs web yang digunakan banyak programmer. Beberapa menggunakan Vimium, dan tampaknya ekstensi mencoba meningkatkan pengeditan pada elemen tertentu di halaman saya. Ini telah menyebabkan beberapa kesalahan JS rumit yang sangat sulit untuk dilacak serta banyak pengguna kesakitan karena mereka tidak menyadari kegagalan tersebut karena konflik antara kode kami dan Vimium.
Apakah ada cara untuk menandai elemen dengan "jika Anda menjalankan Vimium, tolong jangan tingkatkan elemen ini"? Terima kasih atas balasan Anda sebelumnya.
@vincentwoo... Tidak saat ini. Fitur seperti itu akan membutuhkan pemikiran yang cermat.
Apakah Anda terbuka untuk mempertimbangkan fitur ini? Jika demikian, dapatkah Anda mengatakan apa yang menjadi perhatian utama Anda? Saya jelas tidak ingin menginjak kaki apa pun, tetapi saya ingin menawarkan pengalaman pengguna yang lebih baik bagi pengguna saya yang telah menginstal Vimium (yang merupakan sebagian besar orang).
+1 Ini akan menjadi tambahan yang sangat berguna.
Anda dapat mengirimkan pesan unload
palsu pada DOM ready / window load - jika hanya Vimium yang telah dimulai.
Inilah contoh saya: https://jsfiddle.net/2L36ypys/ , dan Anda akan melihat bahwa Anda tidak dapat menggunakan f
untuk mengaktifkan petunjuk.
Ini berfungsi sejak komit adce73cb68f7ca3e3e01ca6fbb08a1008c9c8b90 (2016/04/05).
BTW, bisakah Anda memberikan lebih banyak petunjuk dan kami dapat menyelesaikan konflik semacam itu.
Saya sendiri bukan pengguna vimium, jadi saya akan menginstalnya besok dan mencoba membuat laporan bug yang lebih konkret untuk Anda. Terima kasih untuk cuplikannya.
Faktanya, menurut pengujian di https://jsfiddle.net/2L36ypys/1/ , kami dapat mengirimkan pesan seperti itu dari lingkungan "Host" ketika halamannya "loading"
, karena Vimium menginstal unload
pendengar acara sebelum semua skrip halaman lainnya.
Tetapi Vimium++ saya tidak menggunakan pendengar ini dan tidak ada metode mudah untuk menghancurkannya dengan skrip halaman.
Jadi saya mengharapkan pencarian Anda. Halaman pengujian tempat Anda dapat mereproduksi kesalahan tidak masalah. Terima kasih banyak.
Terkait dengan ini, ada proyek berusia 2 tahun untuk mendeteksi apakah pengguna menggunakan Vimium, mungkin berguna di sini: https://github.com/EvanHahn/Detect-Vimium
@pimlottc Ekstensi tidak berfungsi selama 1 atau 2 tahun, karena Vimium menggunakan 'shadowDOM' untuk menyembunyikan simpulnya.
Saya tidak dapat mereproduksi masalah yang dialami pengguna vimium di situs saya (mungkin karena saya tidak menggunakan Vim secara pribadi). Apakah masih ada kemungkinan untuk menambahkan semacam kelas CSS khusus vimium ke elemen untuk meminta ekstensi agar tidak menambahnya?
Apakah masih ada kemungkinan untuk menambahkan semacam kelas CSS khusus vimium ke elemen untuk meminta ekstensi agar tidak menambahnya?
Saya tidak yakin ini ide yang bagus.
Pastinya akan menimbulkan kebingungan pengguna jika Vimium tidak berfungsi sama sekali di beberapa situs, dan pengguna sendiri sudah dapat menonaktifkan Vimium di situs Anda, lihat di sini .
Juga, jika kami mengejar ide Anda, kami mungkin juga memerlukan mekanisme bagi pengguna untuk mengaktifkan kembali Vimium.
Baik. Apakah ada cara bagi kami untuk setidaknya mengetahui apakah Vimium telah diaktifkan? Masalahnya adalah pengguna menyalahkan kami ketika ada sesuatu yang rusak karena interaksi yang aneh. Layanan saya sudah menggunakan permukaan pengeditan yang sangat rumit (CodeMirror), jadi saya ingin dapat melakukan sesuatu .
Jika Vimium setidaknya dapat menambahkan artefak pada DOM dalam beberapa cara, setidaknya situs seperti @vincentwoo merujuk dapat _disadarkan_ pengguna telah menginstal Vimium dan mereka dapat menampilkan pesan kepada pengguna yang mengingatkan mereka mungkin ada perilaku yang bertentangan saat menggabungkan UI kompleks di halaman web dengan semua penawaran Vimium, atau bahkan menawarkan bantuan dalam mengonfigurasi aplikasi yang dimaksud atau Vimium untuk menyelesaikannya.
Jika Vimium setidaknya dapat menambahkan artefak di DOM dalam beberapa cara ...
Kami memuat Vomnibar di setiap halaman (tingkat atas). Kita bisa menetapkan kelas atau id yang sesuai, kurasa.
Itu pasti akan membantu!
@smblott-github Ide saya adalah bahwa Vimium mengganti nama node host bayangannya dari <div>
menjadi nama lain, seperti <vimium-ui>
, dan kemudian cukup mencari anak <html>
untuk nama tag ini. Saya pikir nama tag elemen khusus ini tidak akan sama dengan situs web lain.
Ide saya adalah bahwa Vimium mengganti nama node host bayangannya dari
<div>
menjadi nama lain, seperti<vimium-ui>
, dan kemudian cukup mencari anak-anak<html>
untuk nama tag ini .
Saat ini tidak memungkinkan karena masalah Chromium ini .
Anda dapat mendeteksi sumber daya kami yang dapat diakses melalui web. Sebagai contoh:
var xhr = new XMLHttpRequest(),
vimiumEnabled = false;
xhr.onerror = xhr.onload = function(){vimiumEnabled = xhr.responseText !== "";};
xhr.open("GET","chrome-extension://dbepggeogbaibhgnhhndojpepiihcmeb/content_scripts/vimium.css");
xhr.send()
@mrmr1993 Saya tidak ingin membuat elemen "khusus", hanya HTMLElement
dengan nama tag khusus. Node HTMLElement
sama seperti HTMLUnknownElement
tetapi masih mendukung untuk melampirkan shadowRoot.
Hanya beberapa pemikiran.
Haruskah webmaster memiliki cara untuk menonaktifkan Vimium?
Haruskah pemilik situs web memiliki cara untuk mendeteksi Vimium?
Saya tidak yakin apakah webmaster harus memiliki kedua kemampuan tersebut, tetapi jika mereka memilikinya, mungkin tidak harus bergantung pada detail implementasi yang kebetulan. Solusi standar, seperti #2532 mungkin merupakan cara yang tepat.
Misalnya, halaman mungkin menyertakan hal berikut:
<meta name="keybinding" disable="suggest")">
<script>
document.querySelector('meta[name="keybinding"]').addEventListener('detect', () => {
console.log('hi vimium user');
});
</script>
Ini memungkinkan webmaster
Vimium harus
Secara teori, ekstensi keybinding lain juga dapat mengimplementasikan antarmuka ini sehingga web master tidak perlu mendeteksi Vimium, cVim, Surfing Keys, Saka Key, VimFx, Vimari, dll. secara terpisah.
Saya juga mencari solusi untuk mendeteksi vimium. Proposal @eejdoowad terlihat bagus. Sementara itu saya setuju dengan @gdh1995 , <div>
dengan id/nama kelas yang aneh akan segera menyelesaikan masalah untuk saat ini.
Pada vimium v1.59, di bawah ini adalah fungsi yang berfungsi, Tidak sepenuhnya dapat diandalkan, karena kurangnya pengidentifikasi yang dapat diandalkan, jika Anda memiliki ekstensi lain yang memasukkan shadowDom seperti yang dilakukan vimium maka itu akan rusak.
function hasVimium () {
try {
const shadowRoot = document.querySelector('html > div').shadowRoot;
return Boolean(shadowRoot.querySelector('style').textContent.match(/vimium/));
} catch (e) {
return false;
}
}
Saya hanya ingin mengatakan bahwa saya akan khawatir jika mekanisme deteksi bawaan diterapkan. Sidik jari tentu saja dapat selalu dilakukan dengan plugin yang mengubah DOM kecuali seseorang akan melarang javascript situs web, tetapi setidaknya jangan memberi orang target titik data yang mudah untuk dilacak...
Kami dapat memiliki mekanisme di mana kami tidak mendeteksi Vimium, tetapi tambahkan, katakanlah, tag meta di halaman kami yang memiliki pesan untuk ditampilkan untuk berjaga-jaga jika pengguna Vimium menggunakan halaman tersebut, dengan opsi untuk menonaktifkan. Vimium dengan demikian dapat menghindari deteksi sepele dan kami tidak perlu mempelajari apa pun tentang pengguna.
Ini cukup diperlukan untuk aplikasi yang saya kerjakan karena bug seperti https://github.com/philc/vimium/issues/2504 . Ringkasan adalah bahwa dengan menjalankan vimium, situs web akan mulai responsif, dan menjadi lebih lambat dan lebih lambat saat penangan acara menumpuk.
Akan lebih baik jika situs web dapat mendeteksi:
Dan alangkah baiknya jika situs web dapat dengan sopan menonaktifkan vimium dengan cara yang jelas bagi pengguna (sehingga ikon vimium tidak lagi berwarna biru)
@mgsloan Bisakah Anda memberikan halaman contoh? Cara penanganan mode penyisipan telah berubah secara substansial sejak #2504.
(Saya tidak yakin tentang situs yang secara sepihak menonaktifkan Vimium. Itu bisa sangat membingungkan.)
@smblott-github Hai, terima kasih atas tanggapannya! Memang masalah kinerja tampaknya hilang. Besar!
Ada masalah di mana beberapa perilaku input sedikit berbeda dari ketika vimium dinonaktifkan. Saya akan menanyakan dan melihat apakah kami dapat membagikan urlnya.
Hai, yang di sana! Apakah ada pemahaman tentang pendekatan mana yang dapat diterima oleh pengelola proyek? Kami akan bersedia menyumbangkan waktu untuk menyelesaikan ini (cukup banyak pengguna vimium menggunakan CoderPad) tetapi tidak ingin menginjak kaki apa pun.
Saya pikir titik kunci yang diharapkan oleh Vimium adalah bahwa semua pengguna menggunakannya tanpa rasa sakit atau gangguan.
Karena situs Anda memiliki beberapa tindakan khusus yang berbeda dengan Vimium, termasuk esc pada kotak input, haruskah Vimium mengizinkan untuk "mengecualikan" <esc>
pada halaman opsinya?
Jika demikian, pengguna Anda dapat mengonfigurasinya secara manual dan mendapatkan kembali tindakan situs (saat ini, tampaknya <esc>
tidak dapat dikecualikan).
Tapi saya tidak suka ide Vimium menonaktifkan dirinya sendiri untuk memenuhi kondisi khusus. Ini membahayakan nilai Vimium.
Adapun untuk menerbitkan versi Vimium, saya menyarankan:
<meta>
, dibuat oleh Vimium dan berisi beberapa kata seperti "Vimium"Memeriksa div tingkat atas sepertinya tidak berfungsi lagi karena tidak lagi dipasang sampai pengguna melakukan sesuatu.
Dengan kata lain, saat memuat halaman, tidak ada artefak yang bisa diandalkan
Komentar yang paling membantu
Hanya beberapa pemikiran.
Haruskah webmaster memiliki cara untuk menonaktifkan Vimium?
Haruskah pemilik situs web memiliki cara untuk mendeteksi Vimium?
Saya tidak yakin apakah webmaster harus memiliki kedua kemampuan tersebut, tetapi jika mereka memilikinya, mungkin tidak harus bergantung pada detail implementasi yang kebetulan. Solusi standar, seperti #2532 mungkin merupakan cara yang tepat.
Misalnya, halaman mungkin menyertakan hal berikut:
Ini memungkinkan webmaster
Vimium harus
Secara teori, ekstensi keybinding lain juga dapat mengimplementasikan antarmuka ini sehingga web master tidak perlu mendeteksi Vimium, cVim, Surfing Keys, Saka Key, VimFx, Vimari, dll. secara terpisah.