Wie kann ich eine externe JavaScript-Datei mit einem Bookmarklet laden? Dies würde die URL-Längenbeschränkungen des IE überwinden und die Dinge im Allgemeinen sauberer halten.
Externes JS aus Bookmarklet laden?
Justin
Miguel Ventura
2015-Aktualisierung
Inhaltssicherheitsrichtlinie wird verhindern, dass dies jetzt auf vielen Websites funktioniert. Der folgende Code funktioniert beispielsweise nicht auf Facebook.
Antwort 2008
Verwenden Sie ein Bookmarklet, das ein Skript-Tag erstellt, das Ihr externes JS enthält.
Als Beispiel:
javascript:(function(){document.body.appendChild(document.createElement('script')).src="https://stackoverflow.com/questions/106425/** your external file URL here **";})();
-
Ich frage mich nur, warum es in einen Funktionsaufruf verpackt ist, anstatt nur Folgendes zu haben: javascript:document.body.appendChild(document.createElement(‘script’)).src=’** Ihre externe Datei-URL hier **’;
– Markieren
12. Dezember 2010 um 18:34 Uhr
-
Probieren Sie es aus! So belassen javascript:a=b hinterlässt eine Seite mit der Aufschrift „b“. Dies geschieht, es sei denn, Sie machen Ihren Code ungültig, indem Sie ihn entweder in eine Funktion einfügen, die nichts zurückgibt, oder indem Sie ihn an übergeben Leere(…).
– Miguel Ventura
13. Dezember 2010 um 12:37 Uhr
-
Auch, wenn die Originalseite eine globale Variable verwendet adein a=b wird es nicht überschreiben, wenn Sie es in einer Funktion haben
– Nico Gawenda
29. Januar 2013 um 8:02 Uhr
-
Keine Notwendigkeit, eine Onload-Funktion einzurichten, um Sie wissen zu lassen, wann Sie Funktionen im Skript aufrufen können???
– Michael
14. Januar 2014 um 0:36 Uhr
-
Die Inhaltssicherheitsrichtlinie verhindert, dass dies jetzt auf vielen Websites funktioniert
– Michael
30. Dezember 2014 um 23:21 Uhr
Zombo
Firefox und vielleicht andere unterstützen mehrzeilige Bookmarklets, ein Liner ist nicht erforderlich. Wenn Sie den Code einfügen, werden nur Zeilenumbrüche durch Leerzeichen ersetzt.
javascript:
var q = document.createElement('script');
q.src="http://svnpenn.github.io/bm/yt.js";
document.body.appendChild(q);
void 0;
-
Dies funktioniert beispielsweise nicht, wenn Sie auf Facebook.com sind.
– Dan Dascalescu
7. Mai 2015 um 19:47 Uhr
Wenn ich eine in FF & Chrome getestete Methode hinzufügen kann (zur Lesbarkeit auf mehrere Zeilen aufgeteilt):
javascript:var r = new XMLHttpRequest();
r.open("GET", "https://...my.js", true);
r.onloadend = function (oEvent) {
new Function(r.responseText)();
/* now you can use your code */
};
r.send();
undefined
Ich ziehe es immer vor, ein beliebtes Open-Source-Projekt zu verwenden ladejs
Es ist Cross-Browser-getestet und hat mehr Funktionalität/Komfortfunktionen.
Der Code sieht also so aus:
loadjs=function(){function e(e,n){var t,r,i,c=[],o=(e=e.push?e:[e]).length,f=o;for(t=function(e,t){t.length&&c.push(e),--f||n(c)};o--;)r=e[o],(i=s[r])?t(r,i):(u[r]=u[r]||[]).push
loadjs('//path/external/js', {
success: function () {
console.log('something to run after the script was loaded');
});