public
Fork of jeresig/env-js
Description: A pure-JavaScript browser environment.
Homepage: http://ejohn.org/blog/bringing-the-browser-to-the-server/
Clone URL: git://github.com/thatcher/env-js.git
Click here to lend your support to: env-js and make a donation at www.pledgie.com !
env-js /
name age message
file .gitignore Wed Nov 11 17:28:45 -0800 2009 added build process for html5 parser. built pa... [thatcher]
file .gitmodules Mon Dec 01 21:06:47 -0800 2008 big fixes for the javascript dom [thatcher]
file .project Wed May 20 06:54:39 -0700 2009 added xpath and xslt related stubs to satisfy p... [thatcher]
directory DTD/ Mon Nov 17 22:09:03 -0800 2008 theres a hole in the bucket [thatcher]
file Makefile Sun Aug 16 18:02:09 -0700 2009 did some refactoring of Glen E. Iveys substanti... [thatcher]
file README Wed Oct 28 18:34:31 -0700 2009 merge timer [smparkes]
file Rakefile Sun Aug 16 18:02:09 -0700 2009 did some refactoring of Glen E. Iveys substanti... [thatcher]
directory bin/ Thu Nov 05 18:24:04 -0800 2009 html 5 parser integration point [thatcher]
file build.properties Tue Nov 24 20:00:02 -0800 2009 merged minor conflict, added load event changed... [thatcher]
file build.xml Tue Nov 24 20:11:32 -0800 2009 checking new commit pattern for run code run [thatcher]
directory dist/ Tue Nov 24 20:02:54 -0800 2009 env.1.1.rc.2 [thatcher]
directory doc/ Thu Aug 20 07:26:23 -0700 2009 found some good little bugs in node insertBefor... [thatcher]
directory htmlparser/ Thu Nov 12 05:52:56 -0800 2009 found error in copy step of parser build, so on... [thatcher]
directory jsl/ Thu Jan 15 13:28:15 -0800 2009 oops I think I just commited incorrectly [thatcher]
directory licenses/ Tue Aug 25 21:56:29 -0700 2009 merging glens envjs.main changes. used in comb... [thatcher]
directory rhino/ Wed Oct 14 19:29:13 -0700 2009 Added support for the "quit" command/function p... [gleneivey]
directory src/ Tue Nov 24 20:00:02 -0800 2009 merged minor conflict, added load event changed... [thatcher]
directory test/ Tue Nov 24 20:14:49 -0800 2009 adding bundled qunit to support runcoderun [thatcher]
README
env.js : A pure JavaScript browser environment.
Developed by John Resig (http://ejohn.org)

Major Contributers:
Chris Thatcher (http://github.com/thatcher)

GitHub repositories:
http://github.com/jeresig/env-js/
http://github.com/thatcher/env-js/

Mailing List:
http://groups.google.com/group/envjs

Lighthouse (Bug Tracking):
http://envjs.lighthouseapp.com/projects/21590-envjs/

Build Status:
http://runcoderun.com/thatcher/env-js

Original blog post:
http://ejohn.org/projects/bringing-the-browser-to-the-server/

Rhino (Java-based JavaScript engine)
http://www.mozilla.org/rhino/

Getting the code:

* Check the code out from git: git clone git://github.com/thatcher/env-js.git

Building:
* run "ant concat"
* Creates a platform-agnostic "dist/env.js" file and a Rhino-specific "dist/env.rhino.js" file.

Testing:
* Checkout qunit: "git submodule update --init"
* run "ant test"

Java command line:

env.rhino.js can be run either with a "generic" version of the Rhino
library (js.jar), or with the repackaged/extended version of Rhino
supplied with env.js (env-js.jar).  If your application uses multiple
windows, frames, or iframes, or if it depends on precise adherence to
JavaScript object scoping in event handlers, you will have to use
env-js.jar.  Simple applications may be able to run with the generic
version of Rhino.

The command line used for testing env.js can be found in build.xml,
although the general form is:
     java -jar [jar file] [javascript file]
Where "jar file" is either "dist/env-js.jar", "rhino/js.jar", or your
local path to a different version of the Rhino js.jar file.  The
"javascript file" is the path to the JavaScript you wish to execute.

Installing:
1) Include the proper env.js file for your platform.
     load('env.rhino.js'); //if in a Rhino script

2) Tell env.js to load an HTML file from your file system that it should model:
     Envjs("some/file.html");
       or
     var someWindow = window.open("some/file.html");
       or
     window.location = "some/file.html";

   Optionally you can turn on/off settings by passing an options object:
     Envjs("some/file.html", {log: function(msg){ console.debug(msg) }});

3) Optionally trigger "document ready" events in one of these ways:

4) Start processing of window(s)' event queue:
     Envjs.wait();

All together, the steps could be:

   a) simplest method:
     load('env.rhino.js');
     Envjs("some/file.html");
     Envjs.wait();

   b) jQuery ready method:
     load('env.rhino.js');
     load('jquery-1.3.2.js');
     Envjs("some/file.html");
     load('some-code-that-sets-up-jquery-onready-behaviors.js')
     jQuery.ready();
     Envjs.wait();

   c) Other JavaScript frameworks have their own methods of setup, but the general pattern is:
     // step 1: load env.js
     // optionally: load your framework(s)
     // step 2: tell env.js the base DOM to model
     // optionally: run any setup code for your framework(s0
     // step 3: tell the framework that the document is loaded
     // step 4: Envjs.wait();

Note that env.js is currently limited to loading a single HTML page
from the original window.  If you are going to load multiple pages in
succession into the same window, load the first into a new window
object using window.open().

Testing jQuery Compatibility:
* run ./bin/test-jquery.sh 1.3.2
* run ./bin/test-jquery.sh 1.3.1
* run ./bin/test-jquery.sh 1.2.6
* Checks out the given jQuery tag from Subversion into test/vendor/jQuery/[version], 
  moves dist/env.rhino.js into the correct location in their tree, and runs the test suites.

Changes with new timer code:

Previously with envjs, you could call Java's thread sleep() method to delay execution. This was mostly used in test 
suites. This may no
longer work the same since it will inhibit all events from firing. You can now use the Envjs.wait(milliseconds) call to 
achieve an
effect similar to calling sleep().