Seperti yang mungkin Anda ketahui, Google Chrome telah membatasi beberapa skrip Greasemonkey.
Chromium tidak mendukung
@require
,@resource
,unsafeWindow
,GM_registerMenuCommand
,GM_setValue
, atauGM_getValue
.
Tanpa memerlukan, saya tidak dapat menemukan cara untuk memasukkan perpustakaan jQuery dalam skrip Greasemonkey di bawah Google Chrome.
Apakah ada yang punya saran dalam hal ini?
@require
saat ini, yang merupakan pendekatan yang jauh lebih sederhana daripada yang ada di jawaban.var $ = unsafeWindow.jQuery;
@require
berfungsi dengan baik di situs di mana Anda tidak khawatir tentang konflik dengan ribuan atau jutaan perpustakaan JS lainnya yang terikat pada $ pada saat memuat. Namun, jika Anda menulis skrip untuk situs menggunakan $ untuk sesuatu yang lain, atau lebih buruk lagi menulis skrip untuk dijalankan di setiap situs, gunakan mekanisme memuat yang relatif aman dijelaskan oleh tghw di bawah ini.Jawaban:
Dari "Tip Naskah Pengguna: Menggunakan jQuery - Blog Erik Vold"
sumber
script.textContent = "(" + callback.toString() + ")();";
kescript.textContent = "jQuery.noConflict();(" + callback.toString() + ")();";
dalam template skrip pengguna saya sendiri sehingga tidak akan ada konflik yang mengejutkan. :)main()
, Anda dapat menggunakan$.loadScript()
, dan menjalankan semuanya saat loadScript selesai memuat jQueryUI.main
akan dieksekusi dalam konteks halaman target, yang berarti bahwa (antara lain) kebijakan permintaan lintas-situs dari halaman target berlaku - (misalnya saya harusGM_xmlhttpRequest
memasukkan kembali sebelum melihat bahwa itu memang tidak membantu saya). Pada akhirnya saya cukup menyalin kodejquery.min.js
.Saya telah menulis beberapa fungsi berdasarkan skrip Erik Vold untuk membantu menjalankan saya menjalankan fungsi, kode, dan skrip lainnya dalam dokumen. Anda dapat menggunakannya untuk memuat jQuery ke halaman lalu menjalankan kode di bawah
window
lingkup global .Contoh Penggunaan
Anda dapat mengklik di sini untuk menginstalnya, jika Anda percaya bahwa saya tidak mencoba menipu Anda untuk menginstal sesuatu yang berbahaya dan tidak ada orang yang mengedit posting saya untuk menunjuk ke hal lain. Muat ulang halaman dan Anda akan melihat perbatasan di sekitar pos saya.
Fungsi
load(url, onLoad, onError)
Memuat skrip
url
ke dalam dokumen. Secara opsional, callback dapat disediakan untukonLoad
danonError
.execute(functionOrCode)
Menyisipkan fungsi atau string kode ke dalam dokumen dan menjalankannya. Fungsi dikonversi ke kode sumber sebelum dimasukkan, sehingga kehilangan lingkup / penutupan saat ini dan dijalankan di bawah
window
lingkup global .loadAndExecute(url, functionOrCode)
Jalan pintas; ini memuat skrip dari
url
, lalu menyisipkan dan mengeksekusifunctionOrCode
jika berhasil.Kode
sumber
Gunakan jQuery tanpa takut konflik , dengan menelepon
jQuery.noConflict(true)
. Seperti itu:Tapi, Untuk skrip lintas-browser, mengapa tidak memanfaatkan salinan jQuery lokal yang bagus, cepat, kapan pun Anda bisa?
Berikut ini berfungsi sebagai skrip pengguna Chrome dan skrip Greasemonkey, dan ia menggunakan
@require
salinan jQuery lokal yang bagus , jika platform mendukungnya.sumber
$ = unsafeWindow.jQuery
jika halaman tersebut memiliki jQuery (Saya baru menguji ini di Tampermonkey).Jika halaman sudah memiliki jQuery, cukup ikuti templat ini:
sumber
if
pernyataan yang memeriksawindow.location
.Cara sederhana menggunakan
required
kata kunci:sumber
Ada cara yang sangat mudah untuk berkeliling termasuk salinan lengkap jQuery untuk skrip Chrome saat skrip tersebut tidak benar-benar menggunakan fitur istimewa (GM_ * fungsi, dll) ...
Cukup masukkan skrip itu sendiri ke halaman DOM dan jalankan! Bagian terbaiknya adalah teknik ini berfungsi dengan baik di Firefox + Greasemonkey, sehingga Anda dapat menggunakan skrip yang sama untuk keduanya:
(dicuri secara patologis dari Shog9 di meta.stackoverflow karena dia tidak memindahkannya di sini, dan saya harus menghapus posting meta ..)
sumber
Anda juga dapat mengemas skrip Anda dengan ekstensi jQuery ke Chrome. Lihat Skrip Konten Google Chrome .
Ekstensi Chrome, tidak seperti skrip Greasemonkey, dapat memperbarui sendiri secara otomatis.
sumber
Solusi yang lebih mudah: potong + rekatkan konten jquery.min.js ke bagian atas skrip pengguna Anda. Selesai
Saya menemukan berbagai masalah dengan jawaban yang disarankan. Solusi addJQuery () berfungsi di sebagian besar halaman tetapi memiliki banyak bug. Jika Anda mengalami masalah, cukup salin + rekatkan konten jquery ke skrip Anda.
sumber
Saya ingin tahu apakah Anda tidak dapat bergantung pada
document.defaultView.jQuery
skrip GM Anda:sumber
Pendekatan lain adalah memodifikasi skrip Anda untuk memuat jQuery secara manual. Contoh dari http://joanpiedra.com/jquery/greasemonkey/ :
EDIT: DRAT! Setelah pengujian tampaknya kode ini tidak berfungsi karena Google Chrome menjalankan skrip pengguna / ekstensi dalam lingkup / proses terpisah dari halaman web yang sebenarnya. Anda bisa mengunduh kode jQuery menggunakan XmlhttpRequest dan kemudian Eval, tetapi Anda harus meng-host kode di server yang memungkinkan Berbagi Sumber Daya Silang- Menggunakan
Access-Control-Allow-Origin: *
header. Sayangnya tidak ada CDN saat ini dengan jQuery mendukung ini.sumber
Ekstensi sempurna untuk menanamkan jQuery ke Chrome Console sesederhana yang Anda bayangkan. Ekstensi ini juga menyediakan jika jQuery sudah dimasukkan ke dalam halaman.
Ekstensi ini digunakan untuk menanamkan jQuery ke halaman mana pun yang Anda inginkan. Ini memungkinkan untuk menggunakan jQuery di shell konsol (Anda dapat memanggil konsol Chrome dengan "Ctrl + Shift + j").
Untuk menanamkan jQuery ke tab yang dipilih klik pada tombol extention.
LINK ke ekstensi: https://chrome.google.com/extensions/detail/gbmifchmngifmadobkcpijhhldeeelkc
sumber