Externes JS aus Bookmarklet laden?

Lesezeit: 2 Minuten

Benutzer-Avatar
Justin

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.

Benutzer-Avatar
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

Benutzer-Avatar
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;

Beispiel

  • 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');
    });

1093000cookie-checkExternes JS aus Bookmarklet laden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy