Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从bookmarklet加载外部JS?_Javascript_Load_External_Bookmarklet - Fatal编程技术网

Javascript 从bookmarklet加载外部JS?

Javascript 从bookmarklet加载外部JS?,javascript,load,external,bookmarklet,Javascript,Load,External,Bookmarklet,如何使用bookmarklet加载外部JavaScript文件?这将克服IE的URL长度限制,并通常使事情更干净。2015更新 将阻止这在许多网站现在工作。例如,下面的代码在Facebook上不起作用 2008年答案 使用bookmarklet创建包含外部JS的脚本标记 作为示例: javascript:(function(){document.body.appendChild(document.createElement('script')).src='** your external fil

如何使用bookmarklet加载外部JavaScript文件?这将克服IE的URL长度限制,并通常使事情更干净。

2015更新 将阻止这在许多网站现在工作。例如,下面的代码在Facebook上不起作用

2008年答案 使用bookmarklet创建包含外部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=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');
    });

(e=e=e.推?e[e[e]e[e]e[e]e[e]e[e]的[e]))长度,f=o;为(t=函数(e,t)的长度,f=o;为(t)函数(e,t)的长度,f=o;为(t)函数(e,t)长度,f=t(e,t)为(t(t)函数(e,t(e,t)的长度和t(e,t)长度和c.推(t)的长度和c.推(t.推(t.推(e,t)长度和c.推(t)推(t)的长度和c.推(e.推(e.推(e,长度和c.推(e)推(e,t)推(e)推(e.推(e,长度和c)推(e)推(e,长度和c.推(e)推(e)推(e,长度和c.推(e)的)拼接(0,1)}函数t(e,n,r,i){var o,s,u=document,f=r.async,a=(r.numRetries | | 0)+1、h=r.之前的第124|| c;i=i=i|| 0,/(cscss!css.css$)//测试(e)测试(e)测试(e)测试(e)测试(e)测试(e)测试(e)测试(o)0)测试(e)测试(o)0,(s=0,(s=u.s=u.s=u.创建元素(s.s=u.CreatE.CreatE.创建元素(“链接”))))))))))))))))))(2,(s=0,(s=0,(s.s.s=r)之前,h=r)之前,h=r)之前,h=0,(s.c)之前,h=r)之前,h=r.测试(e)测试(e)测试(e)测试(e)测试(e)测试(e)测试(e)测试(e)测试(e)测试(e)测试(e|(u=“e”)}catch(e){u=“e”}如果(“e”==u&&(i+=1)如果我可以添加在FF和Chrome中测试的方法(用于将可读性拆分为多行):


只是想知道,为什么它被包装在函数调用中,而不是只有:javascript:document.body.appendChild(document.createElement('script')).src='**您的外部文件URL在此处**';请尝试查看!将其保留为javascript:a=b将留下一个显示“b”的页面。除非您将代码放在一个不返回任何内容的函数中或将其传递给void(…)来作废代码,否则将发生这种情况。此外,如果原始页面使用全局变量a,则当您在函数中使用它时,您的a=b将不会覆盖它。无需设置onload函数,以让您知道何时可以调用脚本中的函数???内容安全策略将阻止此功能在许多网站中工作。例如,如果您在Facebook.com上,则此功能将不起作用。
javascript:var r = new XMLHttpRequest();
           r.open("GET", "https://...my.js", true);
           r.onloadend = function (oEvent) {
               new Function(r.responseText)();
               /* now you can use your code */
           };
           r.send();
           undefined