代码之家  ›  专栏  ›  技术社区  ›  jkp

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

  •  11
  • jkp  · 技术社区  · 14 年前

    我是否可以在javascript控制台中执行一个从远程源下载和执行javascript脚本的行程序?

    我想看看有没有好的下载方式 this script 并使用它在随机页面上进行交互实验,这些随机页面可能还没有加载jquery。

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

    3 回复  |  直到 6 年前
        1
  •  10
  •   jAndy    14 年前

    我为此写了一个小剧本。

    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
    });
    
        2
  •  2
  •   Thariama    14 年前

    好吧,很简单的方法是取一个很长的javascript片段并将其放在一行中:)

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

        3
  •  0
  •   PrashanD    6 年前
    1. 转到远程源(例如: https://ajax.googleapis.com/ajax/libs/d3js/5.7.0/d3.min.js )

    2. 选择所有JS源(ctrl+a)并复制到剪贴板(ctrl+c)

    3. 转到要注入JS的目标网站

    4. 打开控制台,粘贴复制的源并按Enter键

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