Skip to content
Navigation Menu
●
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
●
●
●
●
●
By size
●
●
●
By industry
●
●
●
By use case
●
●
●
●
Topics
●
●
●
●
●
●
Explore
●
●
●
●
●
GitHub Sponsors
Fund open source developers
The ReadME Project
GitHub community articles
Repositories
●
●
●
●
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
●
Search or jump to...
Clear
Search syntax tips
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
To see all available qualifiers, see our documentation.
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 }}
thatcher
/
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
0
●
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
Name | Name |
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 we’ll 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) you’ld 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 it’s 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 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().
About
A pure-JavaScript browser environment.
www.envjs.com/
Resources
Readme
Activity
Stars
465
stars
Watchers
16
watching
Forks
76
forks
Report repository
35
tags
Languages
●
JavaScript
99.3%
●
Other
0.7%
Footer
© 2024 GitHub, Inc.
●
Terms
●
Privacy
●
Security
●
Status
●
Docs
●
Contact
●
●
ation
You can’t perform that action at this time.