Ekstensi Chrome: Bagaimana cara menghapus skrip konten setelah injeksi?

Dengan Ekstensi Google Chrome: Apakah mungkin untuk menghapus skrip konten setelah dimasukkan ke dalam halaman?

Tidak ada metode API untuk memuat ulang skrip konten (sejauh yang saya tahu), jadi saya ingin menyuntikkan kembali skrip dan menghapus yang lama, jika memungkinkan.


person Azmisov    schedule 28.08.2013    source sumber


Jawaban (2)


Tidak. Anda tidak dapat "menghapusnya". Menjalankan skrip konten dapat menimbulkan efek samping, seperti mendeklarasikan variabel dan fungsi pada objek jendela, menghubungkan ke halaman latar belakang, atau mendengarkan peristiwa DOM. Jika skrip konten Anda tidak memiliki efek samping, sama saja dengan tidak disuntik sama sekali.

Jika Anda ingin menyuntikkannya kembali, cukup panggil eksekusiScript dengan kode atau parameter sumber. Sebaiknya definisikan skrip yang dimasukkan sebagai fungsi, lalu panggil .toString() pada fungsi tersebut, dan masukkan sebagai string mentah dengan argumen "kode" untuk mengeksekusiScript. Argumen untuk fungsi-fungsi ini dapat disisipkan sebagai string JSON, yang bahkan lebih nyaman.

person kzahel    schedule 28.08.2013
comment
Saya khawatir itulah jawabannya; hanya sedikit pekerjaan lagi untukku, kurasa - person Azmisov; 28.08.2013
comment
Sangat menarik cara kerjanya. Setiap kali saya memasukkan debugger dalam skrip konten, panel muncul berwarna kuning dan saya melihat [VM] sebagai sumber skrip. Saya bertanya-tanya apa yang diperlukan untuk benar-benar mengimplementasikan sesuatu yang akan mencoba dan menghapus semua pendengar acara dan efek samping apa pun yang mungkin ditimbulkan oleh skrip konten. - person kzahel; 28.08.2013
comment
Mungkin lebih baik menulis skrip konten sehingga Anda bisa memanggil fungsi untuk memulai ulang. - person e-motiv; 25.02.2018

Saya kira jika Anda memuat skrip konten secara dinamis, dimungkinkan untuk memaksa penyegaran halaman menggunakan javascript (window.location.reload()) kali ini tidak memuat skrip konten

person ejectamenta    schedule 29.03.2015