Загрузить внешний JS из букмарклета? - PullRequest
67 голосов
/ 20 сентября 2008

Как я могу загрузить внешний файл JavaScript с помощью букмарклета? Это позволит преодолеть ограничения по длине URL в IE и, как правило, будет более понятным.

Ответы [ 3 ]

89 голосов
/ 20 сентября 2008

2015 Обновление

Политика безопасности контента предотвратит это на многих сайтах. Например, приведенный ниже код не будет работать на Facebook.

2008 ответ

Используйте букмарклет, который создает тег сценария, который включает ваш внешний JS.

Как образец:

javascript:(function(){document.body.appendChild(document.createElement('script')).src='** your external file URL here **';})();
4 голосов
/ 11 апреля 2013

Firefox и, возможно, другие поддерживают многострочные букмарклеты, нет необходимости в одном вкладыше. Когда вы вставляете код, он просто заменяет символы новой строки пробелами.

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

Пример

0 голосов
/ 11 ноября 2017

Я всегда предпочитаю использовать популярный проект с открытым исходным кодом 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');
    });
...