Загрузить внешний JS из букмарклета?
Как я могу загрузить внешний файл JavaScript с помощью букмарклета? Это позволит преодолеть ограничения длины URL IE и, как правило, держать вещи чище.
3 ответа:
обновление 2015
политика безопасности контента теперь это не будет работать на многих сайтах. Например, приведенный ниже код не будет работать на Facebook.
ответ 2008
используйте букмарклет, который создает тег сценария, который включает в себя внешний JS.
в качестве примера:
javascript:(function(){document.body.appendChild(document.createElement('script')).src='** your external file URL here **';})();
Firefox и, возможно, другие поддерживают многострочные букмарклеты, нет необходимости в один лайнер. Когда вы вставляете код, он просто заменяет новые строки пробелами.
javascript: var q = document.createElement('script'); q.src = 'http://svnpenn.github.io/bm/yt.js'; document.body.appendChild(q); void 0;
Я всегда предпочитаю использовать популярный проект с открытым исходным кодом loadjs
это кросс-браузер протестирован и имеет больше функциональных/комфортных функций.
поэтому код будет выглядеть так:
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'); });