Skip to content  

Navigation Menu

 






Sign in  











Actions
 Automate any workflow  



Packages
 Host and manage packages  



Security
 Find and fix vulnerabilities  



Codespaces
 Instant dev environments  



GitHub Copilot
 Write better code with AI  



Code review
 Manage code changes  



Issues
 Plan and track work  



Discussions
 Collaborate outside of code  



Explore  

All features  

Documentation  

GitHub Skills  

Blog  







By size  

Enterprise  

Teams  

Startups  



By industry  

Healthcare  

Financial services  

Manufacturing  



By use case  

CI/CD & Automation  

DevOps  

DevSecOps  







Topics  

AI

DevOps  

Innersource  

Open Source  

Security  

Software Development  



Explore  

Learning Pathways  

White papers, Ebooks, Webinars  

Customer Stories  

Partners  











GitHub Sponsors
 Fund open source developers  







The ReadME Project
 GitHub community articles  



Repositories  

Topics  

Trending  

Collections  











Enterprise platform
 AI-powered developer platform  



Available add-ons  



Advanced Security
 Enterprise-grade security features  



GitHub Copilot
 Enterprise-grade AI features  



Premium Support
 Enterprise-grade 24/7 support  





Pricing
 



Search or jump to...  

Search code, repositories, users, issues, pull requests...




Clear

Search syntax tips  










Provide feedback  







We read every piece of feedback, and take your input very seriously.


 
 


Saved searches  

Use saved searches to filter your results more quickly

 






To see all available qualifiers, see our documentation.






 
 

Sign in  
Sign up  




You signed in with another tab or window. Reload to refresh your session.  You signed out in another tab or window. Reload to refresh your session.  You switched accounts on another tab or window. Reload to refresh your session.  Dismiss alert  







{{ message }}
 








/   env-js   Public  
forked from jeresig/env-js  



Notifications  You must be signed in to change notification settings  

Fork  76


Star  465  







A pure-JavaScript browser environment.  

www.envjs.com/  

465  stars   132  forks   Branches   Tags   Activity  



Star  


Notifications  You must be signed in to change notification settings  




Code  

Issues  26

Pull requests  10

Actions  

Projects    

Wiki  

Security  

Insights  


Additional navigation options  




Code  

Issues  

Pull requests  

Actions  

Projects  

Wiki  

Security  

Insights  




thatcher/env-js






This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
 





 master
BranchesTags


Code
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

646 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


README

= envjs : pilot fish =

env.js : A pure JavaScript browser environment.

The New Envjs Project


Envjs has moved! Here! We are currently looking for volunteer team members to help make Envjs the project we know it can be. We are also moving out ticket tracking and primary documentation here which well integrate into our main site at our site so we can improve our docs rapidly.

Team Volunteers Needed


Envjs needs a small group of dedicated volunteers to help keep this project rolling along smoothly. If your interested please just send us a message letting us know the role(s) yould like to help with.

Module Managers
Web Designers
Release Manager
Pull Request Manager
Ticket Manager
Email List Manager
Blog Manager
Wiki Manager

We have a lot of work, but Envjs is an increasingly important project with javascripts place as a language growing and growing. We also need lots of people contributing examples, patches, new tests etc.

Sincerely,
Thatcher

Originally Developed by:
John Resig (http://ejohn.org)

Major Contributers:
Christopher Thatcher
Nick Galbreath
Steven Parkes

Early Contributers and Integrated Project Authors:
John Resig (Envjs Prototype and Concept)
Yehuda Katz (Early XHR Implementation)
Jon van Noort (Early DOM Implementation)
David Joham (Early DOM Implementation)
Scott Severtson (Early DOM Implementation)
Steffen Meschkat (XPath Implementation)
Henri Sivonen (HTML5Parser Implementation)

Main GitHub Repository:
http://github.com/envjs/env-js

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

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


BUG TRACKING HAS MOVEDTOGITHUB!!
http://github.com/thatcher/env-js/
Lighthouse (Bug Tracking):
http://envjs.lighthouseapp.com/


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

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

= Guides and Apis =
http://www.envjs.com/doc/guides
http://www.envjs.com/doc/apis

Getting the code:


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



Build targets
 > ant //(does all the following in order)
 > ant env-platforms 
> ant console-specs
 > ant dom-specs
 > ant event-specs
 > ant html-specs
 > ant timer-specs
 > ant parser-specs
 > ant xhr-specs
 > ant window-specs


== src folder ==
The source files for this project are organized by the conventions described below. All final sources are included here, including the massaged parser. Platform developers are welcome to use the src/env/ folder to consider a new platform.
== specs folder ==
The specifications are our best attempt at isolating some DOM Spec into something we can measure via an existing implementation, namely Firefox, and which also allow us to pass the same tests in a Platform.
== a couple code conventions ==


Page width <= 80

Modules are isolated as
 var A,B,C;
 (function(){
 A = ;
 B = ;
 C = ;
 })();

Modules depend on each other in some order. Many modules provide mix-ins to 
enhance interfaces exposed in other modules. events.js for example, provide
 dom 2 events for the dom.js module, adding addEventListener etc to the dom. 
Here is the general hierarchy as proposed:

dom.js |event.js |html.js |timer.js |parser.js |xhr.js |window.js all together we also include what we believe is a platform specific module that describes the interfaces that must be implemented in a platform specific api, and this lives in src/platform/(core|rhino).

Variable naming should be short but complete words.

Module level internal functions should be prefixed and appended with __. 
For example example.


== contributing tests with patches ==
Each module has a spec in env-js/specs. Most tests will run whether you load them in the file:, http:, or https:, though once you get to xhr.js the tests will fail for the file: protocol in firefox because of permissions. To run xhr.js and window.js specs, copy settings.js to local_settings.js, update it, and run a local server to satisfy those urls included in the spec.js;
== Platforms ==

= 1.3 =
 Out of the box we have support for native platforms with rhino, nodejs, 
python-spidermonkey, ruby-v8 (via therubyracer), and ruby-spidermonkey (via 
johnson). We hope to support php and perl as well soon.
We hope to integrate a thin build and test wrapper for each platform which is most familiar with its native build/test/install process so each platform can feel closely integrated. For now however each test target can be run independently the same way you run other scripts: envjs specs//boot.js where is one of: console | css | dom | event | html | parser | timer | window | xhr
== 1.2 and lower ==
 Out of the box 1.2 and lower will only run on rhino. Some support via ruby 
was possible via steven parkes fork of envjs.

== Installing ==

= 1.3 =

0) common usage  
bin/envjs file0.js file1.js file2.js  fileN.js
- where is one of node | spyd | rhino | rhino-debug | johnson | rubyracer
1) fileX.js should be used to simply set window.location and do whatever 
else your browser-javascript-loving-heart desires. For example
window.location = http://www.loc.gov/pictures/;
Thats its! There are a lot of ways to use Envjs to be productive so enjoy!

= 1.2 and lower =

0) common usage  all you need is env.rhino.js and rhino js.jar
 java -jar js.jar -opt -1 myscript.js

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:
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({ scriptTypes: { "": true, text/javascript: true } });
All together, the steps could be:
a) simplest method: load(env.rhino.js); window.location = some/file.html; b) jQuery ready method: load(env.rhino.js); load(jquery.js); window.location = some/file.html; load(some-code-that-sets-up-jquery-onready-behaviors.js) jQuery.ready(); 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 // step 3: tell the framework that the document is loaded
Note:
 The window object can be re-used, for example when crawling
window.location = http://www.envjs.com/; window.location = http://www.envjs.com/news;
Testing jQuery Compatibility:


run ./bin/test-jquery.sh #runs 1.4.1 by default

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.


== 1.3 change notes ==


ALL JAVASCRIPTISLOADED AND RUNBYDEFAULT!!WARNING!!

Runs in Java, Nodejs, Ruby, and Python environments!

Commonjs support. Just add envjs to your load path.

Rhino no longer needs to be run in non-optimized mode. ( yeah! )

XML Parser no longer uses e4x since it is not supported by V8 and 
several other javascript engines. We reintroduced the old xml parser 
to allow simplified support across all engines.

Basic XPath support from googles ajaxslt project now included.

NodeList are live, meaning getElementByTagName returns a nodelist 
which will change when node are added or removed from the document.

Reimplementation of Timer internals to allow

Cleaned up all jslint errors and 99.9% of warnings.

Added internal Category Logging implementation.


== 1.1 to 1.2 note ==
The goal for refactoring 1.1.rcX to 1.2.X was primarily to isolate and organize the code into more independent areas, provide behavior driven testing with tests that run on firefox for each module and its dependencies. Java command line in 1.1: 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. Changes with new timer code: Previously with envjs, you could call Javas 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().
 





About


A pure-JavaScript browser environment.  

www.envjs.com/  

Resources


Readme  

Activity  

Stars


465  stars  

Watchers


16 watching  

Forks


76 forks  

Report repository  





Releases

  35 tags  



Packages  




 
 



 
 



 
 



Languages


 


JavaScript  99.3%  

Other  0.7%  









Footer



© 2024 GitHub, Inc.  


Terms  

Privacy  

Security  

Status  

Docs  

Contact  






You cant perform that action at this time.