title: Injecting & using Firebug-Lite with PhantomJS
body: <p>I'm trying to inject Firebug &amp; jQuery into a webpage using PhantomJS, but I'm unable to access them.</p>
  
  <p>I've tried both PhantomJS methods for adding other JS to a page: page.injectJs() and page.includeJs.  </p>
  
  <p>I'm not able to get anything returned from includeJs (which I wasn't expecting to get, from reading the documentation).  </p>
  
  <p>After I injectJs() and try to use firebug-lite and jQuery functions or objects (like $ and inspect() ) I get errors saying they are undefined or the variable can't be found.</p>
  
  <p>This is my complete script. You can also see it here: <a href="http://piratepad.net/XTPefXOB4o" rel="nofollow">http://piratepad.net/XTPefXOB4o</a></p>
  
  <pre><code>"use strict";
  "use warnings";
  
  var page = new WebPage(), address;
  var useragent = "PhantomJS Firebug integration tool (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11";
  
  page.onConsoleMessage = function (msg) {
      console.log("+eval:" + msg);
  };
  
  page.open(address, function (status) {
      if (status !== 'success') {
          console.log('Unable to access network');
      } else {
          console.log("got into page.open()");
  
          var testInclude = page.includeJs("http://getfirebug.com/releases/lite/1.4/firebug-lite.js", function () {
              var result = true;
              try {
                  inspect($("*")[5]);
              }
              catch(err) {
                  result = false;
              }
              console.log("from includeJS: " + result);
              return result;
              // is there any way to return a value from this?
          });
  
          var results = page.evaluate( function () {      
              var debug = [];
  
              try {
                  page.injectJs("http://getfirebug.com/releases/lite/1.4/firebug-lite.js");
                  page.injectJs("http://pconerly.webfactional.com/site_media/js/jquery-1.7.min.js");
              } catch(err) {
                  debug[0] = false;
              }
              debug[0] = true;
  
              debug[1] = true;
              try {
                  // all 3 of these commands fail.
                  //$(document);
                  inspect(document.querySelectorAll("*")[i]);
                  //firebug;
              }
              catch(err) {
                  console.log(err.message)
                  debug[1] = false;
              }
  
              //debug[1] = inspectAEl(5);
  
              return debug; 
          });
  
          var stuff = results;
          console.log("did not error on injecting JS: " + stuff[0]);
          console.log("used inspect within page.evaluate: " + stuff[1]);
  
          console.log("return value from includeJs: " + testInclude);
  
          console.log("processing finished");            
      }
      phantom.exit();
  });    
  </code></pre>
  
  <p>This is my output:</p>
  
  <pre><code>$ phantomjs firebug-integration.js 
  got into page.open()
  +eval:Can't find variable: inspect
  did not error on injecting JS: true
  used inspect within page.evaluate: false
  return value from includeJs: undefined
  processing finished
  </code></pre>