Wie einige von Ihnen vielleicht wissen, hat Google Chrome die Greasemonkey-Skripte stark eingeschränkt.
Chrom nicht unterstützt
@require
,@resource
,unsafeWindow
,GM_registerMenuCommand
,GM_setValue
, oderGM_getValue
.
Ohne Erfordernis kann ich keine Möglichkeit finden, die jQuery-Bibliothek in das Greasemonkey-Skript unter Google Chrome aufzunehmen.
Hat jemand einen Rat in dieser Angelegenheit?
@require
ist ein weitaus einfacherer Ansatz als in den Antworten.var $ = unsafeWindow.jQuery;
@require
Funktioniert hervorragend auf Websites, auf denen Sie sich keine Sorgen über Konflikte mit Tausenden oder Millionen anderer JS-Bibliotheken machen müssen, die beim Laden an $ gebunden werden. Wenn Sie jedoch ein Skript für eine Site mit $ für etwas anderes schreiben oder noch schlimmer, ein Skript für jede Site schreiben, verwenden Sie den vergleichsweise sicheren Lademechanismus, der unter tghw unten erläutert wird .Antworten:
Aus "User Script Tipp: Verwenden von jQuery - Erik Volds Blog"
quelle
script.textContent = "(" + callback.toString() + ")();";
umscript.textContent = "jQuery.noConflict();(" + callback.toString() + ")();";
in meiner eigenen Benutzerskriptvorlage so wird es keine überraschenden Konflikte sein. :)main()
können Sie$.loadScript()
alles andere verwenden und dann ausführen, wenn loadScript mit dem Laden von jQueryUI fertig ist.main
im Kontext der Zielseite ausgeführt, was bedeutet, dass (unter anderem) die standortübergreifende Anforderungsrichtlinie der Zielseite gilt - (z. B. musste ich erneut einwerfen,GM_xmlhttpRequest
bevor ich dies sah hilf mir nicht). Am Ende kopiere ich einfach den Code vonjquery.min.js
.Ich habe einige Funktionen basierend auf dem Erik Vold-Skript geschrieben , damit ich Funktionen, Code und andere Skripte in einem Dokument ausführen kann. Sie können sie verwenden, um jQuery in die Seite zu laden und dann Code im globalen
window
Bereich auszuführen .Beispiel Verwendung
Sie können hier klicken , um es zu installieren, wenn Sie darauf vertrauen, dass ich Sie nicht dazu verleiten möchte, etwas Bösartiges zu installieren, und dass niemand meinen Beitrag so bearbeitet hat, dass er auf etwas anderes verweist. Laden Sie die Seite neu und Sie sollten einen Rand um meinen Beitrag sehen.
Funktionen
load(url, onLoad, onError)
Lädt das Skript unter
url
in das Dokument. Optional können Rückrufe füronLoad
und vorgesehen werdenonError
.execute(functionOrCode)
Fügt eine Funktion oder Codezeichenfolge in das Dokument ein und führt es aus. Die Funktionen werden vor dem Einfügen in Quellcode konvertiert, sodass sie ihren aktuellen Bereich / ihre aktuellen Abschlüsse verlieren und unter dem globalen
window
Bereich ausgeführt werden.loadAndExecute(url, functionOrCode)
Eine Abkuerzung; Dadurch wird ein Skript von
url
geladen undfunctionOrCode
bei Erfolg eingefügt und ausgeführt .Code
quelle
Verwenden Sie jQuery ohne Angst vor Konflikten , indem Sie anrufen
jQuery.noConflict(true)
. Wie so:Aber für Cross-Browser - Scripts, warum nicht nutzen von einem schönen, schnell, lokale Kopie von jQuery, wenn Sie können?
Das folgende Skript funktioniert als Chrome-Benutzer- und Greasemonkey-Skript und verwendet die schöne lokale
@require
Kopie von jQuery, sofern die Plattform dies unterstützt.quelle
$ = unsafeWindow.jQuery
wenn die Seite jQuery enthält (ich habe dies nur in Tampermonkey getestet).Wenn die Seite bereits jQuery enthält, folgen Sie einfach dieser Vorlage:
quelle
if
Anweisung einwickeln, die das überprüftwindow.location
.Der einfache Weg ist die Verwendung des
required
Schlüsselworts:quelle
Es gibt eine wirklich einfache Möglichkeit, sich fortzubewegen, einschließlich einer vollständigen Kopie von jQuery für Chrome-Skripten, wenn diese Skripte keine privilegierten Funktionen (GM_ * -Funktionen usw.) verwenden ...
Fügen Sie einfach das Skript selbst in das Seiten-DOM ein und führen Sie es aus! Das Beste daran ist, dass diese Technik unter Firefox + Greasemonkey genauso gut funktioniert, sodass Sie für beide dasselbe Skript verwenden können:
(Unentschuldigt von Shog9 auf meta.stackoverflow gestohlen, da er es nicht hierher verschoben hat und ich den Meta-Beitrag löschen muss ..)
quelle
Sie können Ihr Skript auch mit der Erweiterung jQuery to Chrome packen. Siehe Inhaltsskripte von Google Chrome .
Chrome-Erweiterungen können sich im Gegensatz zu Greasemonkey-Skripten automatisch aktualisieren.
quelle
Einfachere Lösung: Schneiden Sie den Inhalt von jquery.min.js aus und fügen Sie ihn oben in Ihr Benutzerskript ein. Getan.
Ich habe verschiedene Probleme mit den empfohlenen Antworten gefunden. Die Lösung addJQuery () funktioniert auf den meisten Seiten, weist jedoch auf vielen Seiten Fehler auf. Wenn Sie auf Probleme stoßen, kopieren Sie einfach den Inhalt der Abfrage und fügen Sie ihn in Ihr Skript ein.
quelle
Ich frage mich, ob Sie sich
document.defaultView.jQuery
in Ihrem GM-Skript nicht auf Folgendes verlassen können:quelle
Ein anderer Ansatz wäre, Ihr Skript so zu ändern, dass jQuery manuell geladen wird. Beispiel von http://joanpiedra.com/jquery/greasemonkey/ :
EDIT: DRATS! Nach dem Testen scheint dieser Code nicht zu funktionieren, da Google Chrome Benutzerskripte / -erweiterungen in einem von der eigentlichen Webseite getrennten Bereich / Prozess ausführt. Sie können den jQuery-Code mithilfe einer XmlhttpRequest herunterladen und dann auswerten. Sie müssen den Code jedoch auf einem Server hosten, der die gemeinsame Nutzung von Ressourcen mithilfe des
Access-Control-Allow-Origin: *
Headers ermöglicht. Leider unterstützt KEINER der aktuellen CDNs mit jQuery dies.quelle
Perfekte Erweiterung, um jQuery so einfach wie möglich in die Chrome Console einzubetten. Diese Erweiterung zeigt auch an, ob jQuery bereits in die Seite eingebettet wurde.
Mit dieser Erweiterung wird jQuery in eine beliebige Seite eingebettet. Es ermöglicht die Verwendung von jQuery in der Konsolen-Shell (Sie können die Chrome-Konsole mit "Strg + Umschalt + j" aufrufen).
Um jQuery in die ausgewählte Registerkarte einzubetten, klicken Sie auf die Erweiterungsschaltfläche.
LINK zur Erweiterung: https://chrome.google.com/extensions/detail/gbmifchmngifmadobkcpijhhldeeelkc
quelle