Вопрос

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

Это было полезно?

Решение

Обновление за 2015 год

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

ответ 2008 года

Используйте букмарклет, который создает тег script, включающий ваш внешний 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');
    });
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top