Title: Nodeclipse Help - Phanthom.js

## PhantomJS

PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.

Web page http://phantomjs.org

Sources https://github.com/ariya/phantomjs
Examples https://github.com/ariya/phantomjs/wiki/Examples are also included into distribution.

APIs https://github.com/ariya/phantomjs/wiki/API-Reference#module-api

## PhantomJS in Nodeclipse

As of v0.7 there is no special project type. (e.g. you can create Node.js project to use JSHint validation and `npm` to get some ComonJS moduules) Use right-click `Run As -> PhantomJS Script` .

# Module API

The Module API is modeled after CommonJS Modules is available. Up through PhantomJS 1.6, the only supported modules that were built in:

- webpage
- system
- fs
- webserver
- child_process

As of PhantomJS 1.7, however, users can reference their own modules from the file system using `require` as well.

## Function: `require`

To support the Module API, a `require` function modeled after CommonJS Modules' Require is globally available. General usage:

    var server = require('webserver').create();
    var Awesome = require('MyAwesomeModule');
    Awesome.do();

### Render Multiple URLs to file

    // Render Multiple URLs to file

    var RenderUrlsToFile, arrayOfUrls, system;

    system = require("system");

    /*
    Render given urls
    @param array of URLs to render
    @param callbackPerUrl Function called after finishing each URL, including the last URL
    @param callbackFinal Function called after finishing everything
    */
    RenderUrlsToFile = function(urls, callbackPerUrl, callbackFinal) {
        var getFilename, next, page, retrieve, urlIndex, webpage;
        urlIndex = 0;
        webpage = require("webpage");
        page = null;
        getFilename = function() {
            return "rendermulti-" + urlIndex + ".png";
        };
        next = function(status, url, file) {
            page.close();
            callbackPerUrl(status, url, file);
            return retrieve();
        };
        retrieve = function() {
            var url;
            if (urls.length > 0) {
                url = urls.shift();
                urlIndex++;
                page = webpage.create();
                page.viewportSize = {
                    width: 800,
                    height: 600
                };
                page.settings.userAgent = "Phantom.js bot";
                return page.open("http://" + url, function(status) {
                    var file;
                    file = getFilename();
                    if (status === "success") {
                        return window.setTimeout((function() {
                            page.render(file);
                            return next(status, url, file);
                        }), 200);
                    } else {
                        return next(status, url, file);
                    }
                });
            } else {
                return callbackFinal();
            }
        };
        return retrieve();
    };

    arrayOfUrls = null;

    if (system.args.length > 1) {
        arrayOfUrls = Array.prototype.slice.call(system.args, 1);
    } else {
        console.log("Usage: phantomjs render_multi_url.js [domain.name1, domain.name2, ...]");
        arrayOfUrls = ["www.google.com", "www.bbc.co.uk", "www.phantomjs.org"];
    }

    RenderUrlsToFile(arrayOfUrls, (function(status, url, file) {
        if (status !== "success") {
            return console.log("Unable to render '" + url + "'");
        } else {
            return console.log("Rendered '" + url + "' at '" + file + "'");
        }
    }), function() {
        return phantom.exit();
    });

### Command line options

        D:\Progs\phantomjs-1.9.2-windows>phantomjs -h
        Usage:
           phantomjs [switchs] [options] [script] [argument [argument [...]]]

        Options:
          --cookies-file=<val>                 Sets the file name to store the persistent cookies
          --config=<val>                       Specifies JSON-formatted configuration file
          --debug=<val>                        Prints additional warning and debug message: 'true' or 'false' (default)
          --disk-cache=<val>                   Enables disk cache: 'true' or 'false' (default)
          --ignore-ssl-errors=<val>            Ignores SSL errors (expired/self-signed certificate errors): 'true' or 'false' (default)
          --load-images=<val>                  Loads all inlined images: 'true' (default) or 'false'
          --local-storage-path=<val>           Specifies the location for offline local storage
          --local-storage-quota=<val>          Sets the maximum size of the offline local storage (in KB)
          --local-to-remote-url-access=<val>   Allows local content to access remote URL: 'true' or 'false' (default)
          --max-disk-cache-size=<val>          Limits the size of the disk cache (in KB)
          --output-encoding=<val>              Sets the encoding for the terminal output, default is 'utf8'
          --remote-debugger-port=<val>         Starts the script in a debug harness and listens on the specified port
          --remote-debugger-autorun=<val>      Runs the script in the debugger immediately: 'true' or 'false' (default)
          --proxy=<val>                        Sets the proxy server, e.g. '--proxy=http://proxy.company.com:8080'
          --proxy-auth=<val>                   Provides authentication information for the proxy, e.g. ''-proxy-auth=username:password'
          --proxy-type=<val>                   Specifies the proxy type, 'http' (default), 'none' (disable completely), or 'socks5'
          --script-encoding=<val>              Sets the encoding used for the starting script, default is 'utf8'
          --web-security=<val>                 Enables web security, 'true' (default) or 'false'
          --ssl-protocol=<val>                 Sets the SSL protocol (supported protocols: 'SSLv3' (default), 'SSLv2', 'TLSv1', 'any')
          --ssl-certificates-path=<val>        Sets the location for custom CA certificates (if none set, uses system default)
          --webdriver=<val>                    Starts in 'Remote WebDriver mode' (embedded GhostDriver): '[[<IP>:]<PORT>]' (default '127.0.0.1:8910')
          --webdriver-logfile=<val>            File where to write the WebDriver's Log (default 'none') (NOTE: needs '--webdriver')
          --webdriver-loglevel=<val>           WebDriver Logging Level: (supported: 'ERROR', 'WARN', 'INFO', 'DEBUG') (default 'INFO') (NOTE: needs '--webdriver')
          --webdriver-selenium-grid-hub=<val>  URL to the Selenium Grid HUB: 'URL_TO_HUB' (default 'none') (NOTE: needs '--webdriver')
          -w,--wd                              Equivalent to '--webdriver' option above
          -h,--help                            Shows this message and quits
          -v,--version                         Prints out PhantomJS version

        Any of the options that accept boolean values ('true'/'false') can also accept 'yes'/'no'.

        Without any argument, PhantomJS will launch in interactive mode (REPL).

        Documentation can be found at the web site, http://phantomjs.org.

### Contribute

Edit online on GitHub