Frage

Wie kann ich eine externe JavaScript-Datei laden ein Bookmarklet verwenden? Dies würde die URL Längenbeschränkungen von IE überwinden und in der Regel der Dinge sauberer.

War es hilfreich?

Lösung

2015-Update

Inhalt Sicherheitspolitik dies verhindern wird von der Arbeit in jetzt viele Websites. Zum Beispiel arbeitet der nachfolgenden Code wird nicht auf Facebook.

2008 Antwort

ein Bookmarklet verwenden, die einen Skript-Tag erstellt, die Ihre externe JS enthält.

Als Beispiel:

javascript:(function(){document.body.appendChild(document.createElement('script')).src='** your external file URL here **';})();

Andere Tipps

Firefox und vielleicht auch andere unterstützen mehrzeilige Bookmarklets, keine Notwendigkeit für einen Liner. Wenn Sie in dem Code einfügen ersetzt es nur Zeilenumbrüche mit Leerzeichen.

javascript:
var q = document.createElement('script');
q.src = 'http://svnpenn.github.io/bm/yt.js';
document.body.appendChild(q);
void 0;

Beispiel

Ich ziehe es immer ein beliebtes Open-Source-Projekt verwenden loadjs

Es ist Cross-Browser getestet und mehr Funktionalität / Komfort-Feature hat.

So ist der Code wie folgt aussehen:

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(t)}function n(e,n){if(e){var t=u[e];if(s[e]=n,t)for(;t.length;)t[0](e,n),t.splice(0,1)}}function t(e,n,r,i){var o,s,u=document,f=r.async,a=(r.numRetries||0)+1,h=r.before||c;i=i||0,/(^css!|\.css$)/.test(e)?(o=!0,(s=u.createElement("link")).rel="stylesheet",s.href=e.replace(/^css!/,"")):((s=u.createElement("script")).src=e,s.async=void 0===f||f),s.onload=s.onerror=s.onbeforeload=function(c){var u=c.type[0];if(o&&"hideFocus"in s)try{s.sheet.cssText.length||(u="e")}catch(e){u="e"}if("e"==u&&(i+=1)<a)return t(e,n,r,i);n(e,u,c.defaultPrevented)},!1!==h(e,s)&&u.head.appendChild(s)}function r(e,n,r){var i,c,o=(e=e.push?e:[e]).length,s=o,u=[];for(i=function(e,t,r){if("e"==t&&u.push(e),"b"==t){if(!r)return;u.push(e)}--o||n(u)},c=0;c<s;c++)t(e[c],i,r)}function i(e,t,i){var s,u;if(t&&t.trim&&(s=t),u=(s?i:t)||{},s){if(s in o)throw"LoadJS";o[s]=!0}r(e,function(e){e.length?(u.error||c)(e):(u.success||c)(),n(s,e)},u)}var c=function(){},o={},s={},u={};return i.ready=function(n,t){return e(n,function(e){e.length?(t.error||c)(e):(t.success||c)()}),i},i.done=function(e){n(e,[])},i.reset=function(){o={},s={},u={}},i.isDefined=function(e){return e in o},i}();
loadjs('//path/external/js', {
    success: function () {
        console.log('something to run after the script was loaded');
    });
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top