Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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控制台动态下载并运行javascript脚本?_Javascript_Jquery_Debugging - Fatal编程技术网

如何从javascript控制台动态下载并运行javascript脚本?

如何从javascript控制台动态下载并运行javascript脚本?,javascript,jquery,debugging,Javascript,Jquery,Debugging,我是否可以在javascript控制台中执行一行程序,从远程源下载并执行javascript脚本 我想看看是否有一种很好的方法可以下载并使用它在没有加载jQuery的随机页面上进行交互实验 [编辑:我知道我可以动态创建脚本元素,但有更好的方法吗?]我已经为此编写了一个小脚本 var loadjQuery = function(cb){ if(typeof(jQuery) == 'undefined'){ var scr = document.createElement('scri

我是否可以在javascript控制台中执行一行程序,从远程源下载并执行javascript脚本

我想看看是否有一种很好的方法可以下载并使用它在没有加载jQuery的随机页面上进行交互实验


[编辑:我知道我可以动态创建脚本元素,但有更好的方法吗?]

我已经为此编写了一个小脚本

var loadjQuery = function(cb){
   if(typeof(jQuery) == 'undefined'){
     var scr = document.createElement('script');
     scr.setAttribute('type', 'text/javascript');
     scr.setAttribute('src', 'http://code.jquery.com/jquery-latest.js');

     if(scr.readyState){
        scr.onreadystatechange = function(){
            if(scr.readyState === 'complete' || scr.readyState === 'loaded'){
               scr.onreadystatechange = null;
               if(cb === 'function'){
                  args = [].slice.call(arguments, 1);
                  cb.apply(this, args);
               }
            }
        };
     }
     else {
        scr.onload = function(){
           if(cb === 'function'){
              args = [].slice.call(arguments, 1);
              cb.apply(this, args);
           }
        };
     }

     var head = document.getElementsByTagName('head')[0];
     head.insertBefore(scr, head.firstChild);  
   }
}
这可以跨浏览器工作

编辑

我已将该脚本更新为带有回调的函数。大纲应为:

loadjQuery(function(something){
    // execute code after library was loaded & executed
});

嗯,获取一个很长的javascript代码片段并将其全部放在一行是非常简单的:)

这种方法需要几行代码,您可以将它们混合到一行代码中(但我想您正在寻找一种更短的解决方案)。 您必须评估两个脚本标记的内容才能加载GoogleAjax库——仅此而已。不过,你可能需要打个电话才能得到第一个

  • 转到远程源(例如:)

  • 选择所有js源(ctrl+a)并复制到剪贴板(ctrl+c)

  • 转到要注入js的目标网站

  • 打开控制台,粘贴复制的源,然后按enter键


  • 现在,您可以在目标网站的控制台上使用该库的所有功能。

    nice!刚刚试过你的代码,效果很好。如果有一种方法可以将其加载到chrome中,并提供一些易于使用的快捷方式,那将是一件非常美妙的事情……我猜这就是我必须为之编写chrome扩展的事情+1.
    scr.setAttribute('type','text/javascript')是多余的。另外,您可以使用
    scr.src=…
    而不是
    scr.setAttribute('src',…)
    。变量“cb”是什么?哈哈!不要介意。我知道是回调函数。。。这会派上用场的。谢谢!是的,我想你是对的,我想这就是bookmarklet的含义:)[编辑:有人比我抢先一步!-很高兴我现在问了…]对,这就是bookmarklet功能-我经常使用它来包括firebug lite