* It includes a script in the page
* It uses a callback to ensure any code dependent on the include runs afterwards
* It uses the signal "javaScriptAlertSent" to do the trick (is there another way to be notified of the "onLoad" event from outside the page context?)
* It uses a "private" slot "_appendScriptElement" to pass the script url in the page context (is there a better way?)
* According to Issue #32 (http://code.google.com/p/phantomjs/issues/detail?id=32) I added a "lookup logic" that searchs for the file following those steps:
*# Search for file at given path (relative to PWD or absolute - no difference)
*# Is file there? Inject it
*# Is file not there? Try looking for it in "scriptLookupDir"
*# Is file there? Inject it
*# Is file not there? abort
* "scriptLookupDir" is an extra property for WebPage, that, as by it's name, defines a place where to look to script to inject
* Script can alter the scriptLookupDir, if they want
* Updated "injectme.js" accordingly
* click() accepts a "querySelectorAll" input - can click on multiple things in one call
* loadJsFile() is synchronous at loading JS in the page
* added 2 examples in JavaScript to show how to use (and test) the new methods
* NOTE: someone will have to generate the .coffee version - I tried using "http://ricostacruz.com/js2coffee/" but it hangs and I'm not willing to learn why :P - I don't like Coffee Script.
It is now possible to specify only the URL in the open() function.
The loading callback can be set using onLoadFinished.
Example use:
var page = new WebPage();
page.onLoadFinished = function () {
console.log("Done!");
phantom.exit();
};
page.open("http://example.com");
Instead of using command-line option, file can be uploaded using
WebPage.uploadFile function, e.g.:
var page = new WebPage();
page.open(....., function () {
page.uploadFile('input#attachment', '/path/to/file');
});
uploadFile() accepts selector name (first argument), this is used to identify
which input element will need the filename (second argument).
See http://code.google.com/p/phantomjs/issues/detail?id=12.
By default, WebPage is "silent" and does not report its console message.
This can be overridden easily, e.g:
var page = new WebPage();
page.onConsoleMessage = function (msg) {
console.log(msg);
};
page.open(.....);