Laden Sie externe JS aus Bookmarklet?
-
01-07-2019 - |
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.
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;
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');
});