This fixes a bug with the usage of `require` in env-js, such that env-js now
uses proper relative paths rather than unshifting "." onto `require.paths`. The
behavior of `require` is documented here:

  <http://nodejs.org/docs/v0.4.2/api/modules.html#all_Together...>

With this change in place, it's now possible to use env-js simply by require'ing
it from a script, rather than having env-js host and eval.

Also, this commit changes the initialization of env-js, such that the initial
document is immediately available when the env-js module is loaded. And, the
event loop is disabled so that env-js shuts down cleanly. This probably breaks
some parts of env-js, but it makes it much easier to use so I'm going to play
with it a bit.
This commit is contained in:
Michael Bostock 2011-03-04 13:42:49 -08:00
Родитель 3568ecac2c
Коммит 7df63b3cfe
21 изменённых файлов: 189 добавлений и 148 удалений

39
lib/env-js/bin/envjs Executable file
Просмотреть файл

@ -0,0 +1,39 @@
#!/bin/sh
# Usage: envjs <platorm> file.js [file2.js ...]
###########################################################################
ENVJS_PLATFORM='node'
# first arguments ($1)
# may be a platform or is a file and the default platorm is used
if [ -n "$1" ]; then
if [ -n "$1" ]; then ENVJS_PLATFORM="$1"; shift; fi
fi
# Run envjs with the given platform
###########################################################################
case "$ENVJS_PLATFORM" in
"node")
node envjs/node.js $@
;;
"rhino")
java -Xmx512M -jar rhino/js.jar -opt -1 envjs/rhino.js $@
;;
"rhino-debug")
java -cp rhino/js.jar org.mozilla.javascript.tools.debugger.Main envjs/rhino.js $@
;;
"spyd")
python envjs/spydermonkey.py envjs/spydermonkey.js $@
;;
"rubyracer")
ruby -rrubygems envjs/rubyracer.rb envjs/rubyracer.js $@
;;
"johnson")
ruby -rrubygems envjs/johnson.rb envjs/johnson.js $@
;;
*)
# platform default means $1 was actually a file
node envjs/node.js $ENVJS_PLATFORM $@
;;
esac

Просмотреть файл

@ -4,10 +4,10 @@
* @Console
*/
var Envjs = Envjs || require('envjs/platform/core').Envjs;
var Envjs = Envjs || require('./platform/core').Envjs;
/*
* Envjs console.1.3.pre03
* Envjs console.1.3.pre03
* Pure JavaScript Browser Environment
* By John Resig <http://ejohn.org/> and the Envjs Team
* Copyright 2008-2010 John Resig, under the MIT License
@ -28,7 +28,7 @@ var Envjs = Envjs || require('envjs/platform/core').Envjs;
try{
console.log();
}catch(e){
function escapeHTML(value)
{

Просмотреть файл

@ -18,9 +18,9 @@ var CSS2Properties,
*/
var Envjs = Envjs || require('envjs/platform/core').Envjs,
Document = require('envjs/dom').Document,
HTMLElement = require('envjs/html').HTMLElement;
var Envjs = Envjs || require('./platform/core').Envjs,
Document = require('./dom').Document,
HTMLElement = require('./html').HTMLElement;
/*
* Envjs css.1.3.pre03
* Pure JavaScript Browser Environment

Просмотреть файл

@ -41,8 +41,8 @@ var Attr,
*/
var Envjs = Envjs || require('envjs/platform/core').Envjs,
After = After || require('envjs/platform/core').After;
var Envjs = Envjs || require('./platform/core').Envjs,
After = After || require('./platform/core').After;
/*
* Envjs dom.1.3.pre03

Просмотреть файл

@ -20,9 +20,9 @@ var Event,
*/
var Envjs = Envjs || require('envjs/platform/core').Envjs,
After = After || require('envjs/platform/core').After,
Document = Document || require('envjs/dom').Document;
var Envjs = Envjs || require('./platform/core').Envjs,
After = After || require('./platform/core').After,
Document = Document || require('./dom').Document;
/*
* Envjs event.1.3.pre03
* Pure JavaScript Browser Environment

Просмотреть файл

@ -68,13 +68,13 @@
__loadLink__;
*/
var Envjs = Envjs || require('envjs/platform/core').Envjs,
After = After || require('envjs/platform/core').After,
Document = Document || require('envjs/dom').Document,
Element = Element || require('envjs/dom').Element,
NodeList = NodeList || require('envjs/dom').NodeList,
Node = Node || require('envjs/dom').Node,
Event = Event || require('envjs/event').Event;
var Envjs = Envjs || require('./platform/core').Envjs,
After = After || require('./platform/core').After,
Document = Document || require('./dom').Document,
Element = Element || require('./dom').Element,
NodeList = NodeList || require('./dom').NodeList,
Node = Node || require('./dom').Node,
Event = Event || require('./event').Event;
/*
* Envjs html.1.3.pre03

Просмотреть файл

@ -62,5 +62,5 @@ var require = (function() {
return require;
})();
require('envjs/platform/johnson');
require('envjs/window');
require('./platform/johnson');
require('./window');

Просмотреть файл

@ -1,3 +1,5 @@
require.paths.unshift('.');
require('envjs/platform/node');
require('envjs/window');
require('./platform/node');
Envjs.eventLoop = function() {}; // disabled for clean shutdown
require('./window');
new Window(__this__); // initialize a blank window

Просмотреть файл

@ -9,19 +9,19 @@
*
*/
var Envjs = Envjs || require('envjs/platform/core').Envjs,
After = After || require('envjs/platform/core').After,
DOMImplementation = DOMImplementation || require('envjs/dom').DOMImplementation,
Document = Document || require('envjs/dom').Document,
Element = Element || require('envjs/dom').Element,
NodeList = NodeList || require('envjs/dom').NodeList,
Node = Node || require('envjs/dom').Node,
HTMLDocument = HTMLDocument || require('envjs/html').HTMLDocument,
HTMLElement = HTMLElement || require('envjs/html').HTMLElement,
setTimeout = setTimeout || require('envjs/timer').setTimeout,
clearTimeout = clearTimeout || require('envjs/timer').clearTimeout,
setInterval = setInterval || require('envjs/timer').setInterval,
clearInterval = clearInterval || require('envjs/timer').clearInterval;
var Envjs = Envjs || require('./platform/core').Envjs,
After = After || require('./platform/core').After,
DOMImplementation = DOMImplementation || require('./dom').DOMImplementation,
Document = Document || require('./dom').Document,
Element = Element || require('./dom').Element,
NodeList = NodeList || require('./dom').NodeList,
Node = Node || require('./dom').Node,
HTMLDocument = HTMLDocument || require('./html').HTMLDocument,
HTMLElement = HTMLElement || require('./html').HTMLElement,
setTimeout = setTimeout || require('./timer').setTimeout,
clearTimeout = clearTimeout || require('./timer').clearTimeout,
setInterval = setInterval || require('./timer').setInterval,
clearInterval = clearInterval || require('./timer').clearInterval;
/*
* Envjs parser.1.3.pre03
* Pure JavaScript Browser Environment

Просмотреть файл

@ -43,7 +43,7 @@ var log = {
};
if (typeof console == "undefined") {
console = require('envjs/console').console;
console = require('./console').console;
}
//eg "Mozilla"
@ -980,7 +980,7 @@ Envjs.emit = function(event /*, arg1, arg2, etc*/ ){
eventQueue.push({event:event, args:arguments});
};
setTimeout = require('envjs/timer').setTimeout;
setTimeout = require('./../timer').setTimeout;
var $warming = 10;
@ -1375,7 +1375,7 @@ Envjs.exchangeHTMLDocument = function(doc, text, url) {
frame = doc.__ownerFrame__,
i;
try {
HTMLParser = HTMLParser || require('envjs/parser').HTMLParser;
HTMLParser = HTMLParser || require('./../parser').HTMLParser;
//do some cleanup so we can reuse the document
doc.baseURI = url;
log.debug('reseting document indexes');

Просмотреть файл

@ -1,7 +1,7 @@
var __context__ = __this__;
var Envjs = Envjs ||
require('envjs/platform/core').Envjs;
var Envjs = Envjs ||
require('./core').Envjs;
require('local_settings');
Envjs.platform = "Johnson SpiderMonkey";
@ -13,7 +13,7 @@ Envjs.argv = Ruby.ARGV;
Envjs.exit = function(){ Ruby['exit!'](); };
/*
* Envjs johnson-env.1.3.pre03
* Envjs johnson-env.1.3.pre03
* Pure JavaScript Browser Environment
* By John Resig <http://ejohn.org/> and the Envjs Team
* Copyright 2008-2010 John Resig, under the MIT License
@ -41,7 +41,7 @@ function __extend__(a,b) {
a[i] = b[i];
}
}
}
}
return a;
}
@ -67,7 +67,7 @@ Envjs.repl = function(){
console.log('Envjs REPL Not Available');
};
(function(){
var log = Envjs.logger('Envjs.Platform.Johnson');
Envjs.eval = function(context, source, name){
@ -84,12 +84,12 @@ Envjs.eval = function(context, source, name){
/**
* synchronizes thread modifications
* @param {Function} fn
*/
*/
var lock = new Ruby.Mutex();
//NOTES:
//context['sync'] = lambda{|wrapper|
// Proc.new{|*args|lock.synchronize {wrapper['fn'].call(*args)}}
//context['sync'] = lambda{|wrapper|
// Proc.new{|*args|lock.synchronize {wrapper['fn'].call(*args)}}
//}
//context['sync'] = lambda{|fn| Proc.new{|*args| fn.call(*args) }}
Envjs.sync = function(fn){
@ -116,7 +116,7 @@ Envjs.sleep = function(milliseconds){
return Ruby.sleep(1.0*milliseconds/1000.0);
};
(function(){
var log = Envjs.logger('Envjs.Platform.Johnson');
//Since we're running in spydermonkey I guess we can safely assume
@ -151,7 +151,7 @@ Envjs.proxy = function(scope, parent) {
};
})();(function(){
var log = Envjs.logger('Envjs.XMLHttpRequest.Johnson');
/**
@ -207,7 +207,7 @@ Envjs.readFromFile = function( url ){
data = file.read();
return data;
};
/**
* Used to delete a local file
@ -236,14 +236,14 @@ Envjs.connection = function(xhr, responseHandler, data){
contentEncoding,
responseXML,
i;
if ( /^file\:/.test(url) ) {
//console.log('establishing file connection');
Envjs.localXHR(url, xhr, connection, data);
} else {
log.debug('establishing http connection %s', xhr.url);
try{
connection = Ruby.Net.HTTP.start(
urlparts.hostname,
Number(urlparts.port||80)
@ -252,7 +252,7 @@ Envjs.connection = function(xhr, responseHandler, data){
path = urlparts.path+(urlparts.query?'?'+urlparts.query:'');
switch( xhr.method.toUpperCase() ){
case "GET":
case "GET":
request = new Ruby.Net.HTTP.Get(path);break;
case "PUT":
request = new Ruby.Net.HTTP.Put(path);break;
@ -270,7 +270,7 @@ Envjs.connection = function(xhr, responseHandler, data){
//TODO: add gzip support
//connection.putheader("Accept-Encoding", 'gzip');
//connection.endheaders();
//write data to output stream if required
//TODO: if they have set the request header for a chunked
//request body, implement a chunked output stream
@ -295,7 +295,7 @@ Envjs.connection = function(xhr, responseHandler, data){
if(connection){
[response, headers] = HTTPConnection.go(connection, request, xhr.headers, null);
try{
// Stick the response headers into responseHeaders
var keys = headers.keys();
@ -314,7 +314,7 @@ Envjs.connection = function(xhr, responseHandler, data){
log.info('%s %s %s %s', xhr.method, xhr.status, xhr.url, xhr.statusText);
contentEncoding = xhr.getResponseHeader('content-encoding') || "utf-8";
responseXML = null;
try{
//console.log('contentEncoding %s', contentEncoding);
if( contentEncoding.toLowerCase() == "gzip" ||
@ -339,7 +339,7 @@ Envjs.connection = function(xhr, responseHandler, data){
}
if(responseHandler){
log.debug('calling ajax response handler');
if(!xhr.async){

Просмотреть файл

@ -1,8 +1,8 @@
var __context__ = __this__ = global;
var Envjs = Envjs ||
require('envjs/platform/core').Envjs;
require('local_settings');
var Envjs = Envjs ||
require('./core').Envjs;
require('./../../local_settings');
Envjs.platform = "Node";
Envjs.revision = process.version;
@ -28,7 +28,7 @@ Envjs.exit = function(){
/*
* Envjs node-env.1.3.pre03
* Envjs node-env.1.3.pre03
* Pure JavaScript Browser Environment
* By John Resig <http://ejohn.org/> and the Envjs Team
* Copyright 2008-2010 John Resig, under the MIT License
@ -56,7 +56,7 @@ function __extend__(a,b) {
a[i] = b[i];
}
}
}
}
return a;
}
@ -88,7 +88,7 @@ var Script = process.binding('evals').Script;
Envjs.eval = function(context, source, name, warming){
if(context === global){
return warming ?
return warming ?
eval(source) :
Script.runInThisContext(source, name);
}else{
@ -104,7 +104,7 @@ var $tick = function(){
$tick();
});
};
Envjs.eventLoop = function(){
//console.log('event loop');
$tick();
@ -213,7 +213,7 @@ Envjs.readFromFile = function( url ){
url = url.substring(7,url.length);
return filesystem.readFileSync(url, 'utf8');
};
/**
* Used to delete a local file
@ -242,15 +242,15 @@ Envjs.connection = function(xhr, responseHandler, data){
urlparts = Envjs.urlsplit(url),
i;
if ( /^file\:/.test(url) ) {
Envjs.localXHR(url, xhr, connection, data);
} else {
//console.log('connecting to %s \n\t port(%s) host(%s) path(%s) query(%s)',
//console.log('connecting to %s \n\t port(%s) host(%s) path(%s) query(%s)',
// url, urlparts.port, urlparts.hostname, urlparts.path, urlparts.query);
connection = http.createClient(urlparts.port||'80', urlparts.hostname);
request = connection.request(
xhr.method,
xhr.method,
urlparts.path+(urlparts.query?"?"+urlparts.query:''),
__extend__(xhr.headers,{
"Host": urlparts.hostname,
@ -312,7 +312,7 @@ Envjs.connection = function(xhr, responseHandler, data){
//write data to output stream if required
//TODO: if they have set the request header for a chunked
//request body, implement a chunked output stream
//console.log('sending request %s\n', xhr.url);
if(data){
if(data instanceof Document){

Просмотреть файл

@ -5,8 +5,8 @@
* Copyright 2008-2010 John Resig, under the MIT License
*/
var Envjs = Envjs ||
require('envjs/platform/core').Envjs;
var Envjs = Envjs ||
require('./core').Envjs;
require('local_settings');
var __context__ = Packages.org.mozilla.javascript.Context.getCurrentContext();
@ -25,7 +25,7 @@ Envjs.exit = function(){
};
/*
* Envjs rhino-env.1.3.pre03
* Envjs rhino-env.1.3.pre03
* Pure JavaScript Browser Environment
* By John Resig <http://ejohn.org/> and the Envjs Team
* Copyright 2008-2010 John Resig, under the MIT License
@ -53,7 +53,7 @@ function __extend__(a,b) {
a[i] = b[i];
}
}
}
}
return a;
}
@ -63,14 +63,14 @@ function __extend__(a,b) {
* @param {Object} message
*/
(function(){
Envjs.log = print;
Envjs.lineSource = function(e){
return e&&e.rhinoException?e.rhinoException.lineSource():"(line ?)";
};
var $in, log;
var $in, log;
Envjs.readConsole = function(){
log = log||Envjs.logger('Envjs.Rhino');
$in = $in||new java.io.BufferedReader(
@ -79,7 +79,7 @@ Envjs.readConsole = function(){
return $in.readLine()+'';
};
Envjs.prompt = function(){
java.lang.System.out.print(Envjs.CURSOR+' ');
java.lang.System.out.print(Envjs.CURSOR+' ');
java.lang.System.out.flush();
};
@ -124,12 +124,12 @@ Envjs.eval = function(context, source, name){
// Flush and close the stream.
ostream.flush();
ostream.close();
var out = new java.io.FileOutputStream(new java.io.File(new java.net.URI(url.toString())));
try{
out.write( ostream.toByteArray() );
}catch(e){
}finally{
out.flush();
out.close();
@ -146,7 +146,7 @@ try{
Envjs.sync = sync;
Envjs.spawn = spawn;
//print('sync and spawn are available');
} catch(e){
} catch(e){
//print('sync and spawn are not available : ' + e);
//sync unavailable on AppEngine
Envjs.sync = function(fn){
@ -249,9 +249,9 @@ Envjs.readFromFile = function( url ){
url = Envjs.uri(url);
//console.log("reading from url : %s", url);
var fileReader = new java.io.FileReader(
new java.io.File(
new java.io.File(
new java.net.URI( url )));
var stringwriter = new java.io.StringWriter(),
buffer = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 1024),
length;
@ -263,7 +263,7 @@ Envjs.readFromFile = function( url ){
stringwriter.close();
return stringwriter.toString()+"";
};
/**
* Used to delete a local file
@ -293,8 +293,8 @@ Envjs.connection = function(xhr, responseHandler, data){
instream,
responseXML,
i;
if ( /^file\:/.test(url) ) {
Envjs.localXHR(url, xhr, connection, data);
} else {
@ -358,7 +358,7 @@ Envjs.connection = function(xhr, responseHandler, data){
contentEncoding = connection.getContentEncoding() || "utf-8";
instream = null;
responseXML = null;
try{
//console.log('contentEncoding %s', contentEncoding);
if( contentEncoding.equalsIgnoreCase("gzip") ||
@ -391,7 +391,7 @@ Envjs.connection = function(xhr, responseHandler, data){
outstream.close();
instream.close();
if(binary){
xhr.responseText = new java.lang.String(outstream.toByteArray(), 'UTF-8')+'';
}else{

Просмотреть файл

@ -1,7 +1,7 @@
var __context__ = __this__;
var Envjs = Envjs ||
require('envjs/platform/core').Envjs;
var Envjs = Envjs ||
require('./core').Envjs;
require('local_settings');
Envjs.platform = "V8 RubyRacer";
@ -13,7 +13,7 @@ Envjs.argv = Ruby.ARGV;
Envjs.exit = function(){ Ruby.Process['exit!'](); };
/*
* Envjs rubyracer-env.1.3.pre03
* Envjs rubyracer-env.1.3.pre03
* Pure JavaScript Browser Environment
* By John Resig <http://ejohn.org/> and the Envjs Team
* Copyright 2008-2010 John Resig, under the MIT License
@ -41,7 +41,7 @@ function __extend__(a,b) {
a[i] = b[i];
}
}
}
}
return a;
}
@ -73,7 +73,7 @@ Envjs.repl = function(){
console.log('Envjs REPL Not Available');
};
(function(){
var log = Envjs.logger('Envjs.Platform.RubyRacer');
Envjs.eval = function(context, source, name){
@ -138,7 +138,7 @@ Envjs.proxy = function(scope, parent) {
};
(function(){
var log = Envjs.logger('Envjs.XMLHttpRequest.RubyRacer');
/**
@ -194,7 +194,7 @@ Envjs.readFromFile = function( url ){
data = file.read();
return data;
};
/**
* Used to delete a local file
@ -223,14 +223,14 @@ Envjs.connection = function(xhr, responseHandler, data){
contentEncoding,
responseXML,
i;
if ( /^file\:/.test(url) ) {
log.debug('establishing file connection');
Envjs.localXHR(url, xhr, connection, data);
} else {
log.debug('establishing http native ruby connection %s', xhr.url);
try{
connection = HTTPConnection.connect(
urlparts.hostname,
Number(urlparts.port||80)
@ -244,7 +244,7 @@ Envjs.connection = function(xhr, responseHandler, data){
//TODO: add gzip support
//connection.putheader("Accept-Encoding", 'gzip');
//connection.endheaders();
//write data to output stream if required
//TODO: if they have set the request header for a chunked
//request body, implement a chunked output stream
@ -290,7 +290,7 @@ Envjs.connection = function(xhr, responseHandler, data){
log.info('%s %s %s %s', xhr.method, xhr.status, xhr.url, xhr.statusText);
contentEncoding = xhr.getResponseHeader('content-encoding') || "utf-8";
responseXML = null;
try{
//console.log('contentEncoding %s', contentEncoding);
if( contentEncoding.toLowerCase() == "gzip" ||
@ -316,7 +316,7 @@ Envjs.connection = function(xhr, responseHandler, data){
}
if(responseHandler){
log.debug('calling ajax response handler');
if(!xhr.async){

Просмотреть файл

@ -1,7 +1,7 @@
var __context__ = __this__;
var Envjs = Envjs ||
require('envjs/platform/core').Envjs;
var Envjs = Envjs ||
require('./core').Envjs;
require('local_settings');
Envjs.platform = "SpyderMonkey";
@ -14,12 +14,12 @@ for(var i in sys.argv){
Envjs.argv.shift();
Envjs.argv.shift();
Envjs.exit = function(){
exit();
Envjs.exit = function(){
exit();
};
/*
* Envjs node-env.1.3.pre03
* Envjs node-env.1.3.pre03
* Pure JavaScript Browser Environment
* By John Resig <http://ejohn.org/> and the Envjs Team
* Copyright 2008-2010 John Resig, under the MIT License
@ -47,7 +47,7 @@ function __extend__(a,b) {
a[i] = b[i];
}
}
}
}
return a;
}
Envjs.log = print;
@ -202,7 +202,7 @@ Envjs.readFromFile = function( url ){
data = file.read();
return data;
};
/**
* Used to delete a local file
@ -233,19 +233,19 @@ Envjs.connection = function(xhr, responseHandler, data){
contentEncoding,
responseXML,
i;
if ( /^file\:/.test(url) ) {
log.debug('establishing platform file connection');
Envjs.localXHR(url, xhr, connection, data);
} else {
log.debug('establishing python platform network connection');
try{
log.debug('connecting to %s \n\t port(%s) hostname(%s) path(%s) query(%s)',
log.debug('connecting to %s \n\t port(%s) hostname(%s) path(%s) query(%s)',
url, urlparts.port, urlparts.hostname, urlparts.path, urlparts.query);
connection = httplib.HTTPConnection(urlparts.hostname, urlparts.port || 80);
connection.connect();
request = connection.putrequest(
xhr.method,
xhr.method,
urlparts.path+(urlparts.query?'?'+urlparts.query:'')
);
@ -257,7 +257,7 @@ Envjs.connection = function(xhr, responseHandler, data){
//TODO: add gzip support
//connection.putheader("Accept-Encoding", 'gzip');
connection.endheaders();
//write data to output stream if required
//TODO: if they have set the request header for a chunked
//request body, implement a chunked output stream
@ -304,7 +304,7 @@ Envjs.connection = function(xhr, responseHandler, data){
log.info('%s %s %s %s', xhr.method, xhr.status, xhr.url, xhr.statusText);
contentEncoding = xhr.getResponseHeader('content-encoding') || "utf-8";
responseXML = null;
try{
//console.log('contentEncoding %s', contentEncoding);
if( contentEncoding.toLowerCase() == "gzip" ||
@ -330,7 +330,7 @@ Envjs.connection = function(xhr, responseHandler, data){
connection.close();
}
}
if(responseHandler){
log.debug('calling ajax response handler');
if(!xhr.async){

Просмотреть файл

@ -87,5 +87,5 @@ var require = (function() {
return require;
}());
var __argv__ = arguments;
require('envjs/platform/rhino');
require('envjs/window');
require('./platform/rhino');
require('./window');

Просмотреть файл

@ -68,5 +68,5 @@ var require = (function() {
return require;
})();
var __argv__ = Ruby.ARGV;
require('envjs/platform/rubyracer');
require('envjs/window');
require('./platform/rubyracer');
require('./window');

Просмотреть файл

@ -60,5 +60,5 @@ var require = (function() {
return require;
})();
require('envjs/platform/spydermonkey');
require('envjs/window');
require('./platform/spydermonkey');
require('./window');

Просмотреть файл

@ -1,6 +1,6 @@
/*
* Envjs timer.1.3.pre03
* Envjs timer.1.3.pre03
* Pure JavaScript Browser Environment
* By John Resig <http://ejohn.org/> and the Envjs Team
* Copyright 2008-2010 John Resig, under the MIT License
@ -14,31 +14,31 @@
/*
* Envjs timer.1.3.pre03
* Envjs timer.1.3.pre03
* Pure JavaScript Browser Environment
* By John Resig <http://ejohn.org/> and the Envjs Team
* Copyright 2008-2010 John Resig, under the MIT License
*
*
* Parts of the implementation were originally written by:\
* Steven Parkes
*
*
* requires Envjs.wait, Envjs.sleep, Envjs.WAIT_INTERVAL
This module leaks the following global definitions.
This module leaks the following global definitions.
var setTimeout,
clearTimeout,
setInterval,
clearInterval;
*/
*/
var Envjs = require('envjs/platform/core').Envjs;
var Envjs = require('./platform/core').Envjs;
/*
* - timer.js
*/
(function(){
var log = Envjs.logger();
Envjs.once('tick', function(){
log = Envjs.logger('Envjs.Timer').
@ -59,7 +59,7 @@ exports.setTimeout = setTimeout = function(fn, time){
* clearTimeout
* @param {Object} id
*/
exports.clearTimeout = clearTimeout = function(id){
exports.clearTimeout = clearTimeout = function(id){
log.debug('clearTimeout %s', id);
return Envjs.timers.removeTimerOrInterval(id, 'timeout');
};
@ -79,7 +79,7 @@ exports.setInterval = setInterval = function(fn, time){
* @param {Object} id
*/
exports.clearInterval = clearInterval = function(id){
log.debug('clearInterval %s', id);
log.debug('clearInterval %s', id);
return Envjs.timers.removeTimerOrInterval(id, 'interval');
};

Просмотреть файл

@ -1,10 +1,10 @@
/*
* Envjs window.1.3.pre03
* Envjs window.1.3.pre03
* Pure JavaScript Browser Environment
* By John Resig <http://ejohn.org/> and the Envjs Team
* Copyright 2008-2010 John Resig, under the MIT License
This module leaks the following global definitions.
This module leaks the following global definitions.
var Window,
Screen,
@ -13,18 +13,18 @@ var Window,
*/
var Envjs = Envjs || require('envjs/platform/core').Envjs,
DOMImplementation = DOMImplementation || require('envjs/dom').DOMImplementation,
HTMLDocument = HTMLDocument || require('envjs/html').HTMLDocument,
HTMLFrameElement = HTMLFrameElement || require('envjs/html').HTMLFrameElement,
HTMLIFrameElement = HTMLIFrameElement || require('envjs/html').HTMLIFrameElement,
HTMLParser = HTMLParser || require('envjs/parser').HTMLParser,
Location = Location || require('envjs/xhr').Location,
CSSRule = CSSRule || require('envjs/css').CSSRule;
var Envjs = Envjs || require('./platform/core').Envjs,
DOMImplementation = DOMImplementation || require('./dom').DOMImplementation,
HTMLDocument = HTMLDocument || require('./html').HTMLDocument,
HTMLFrameElement = HTMLFrameElement || require('./html').HTMLFrameElement,
HTMLIFrameElement = HTMLIFrameElement || require('./html').HTMLIFrameElement,
HTMLParser = HTMLParser || require('./parser').HTMLParser,
Location = Location || require('./xhr').Location,
CSSRule = CSSRule || require('./css').CSSRule;
/*
* Envjs window.1.3.pre03
* Envjs window.1.3.pre03
* Pure JavaScript Browser Environment
* By John Resig <http://ejohn.org/> and the Envjs Team
* Copyright 2008-2010 John Resig, under the MIT License
@ -52,7 +52,7 @@ function __extend__(a,b) {
a[i] = b[i];
}
}
}
}
return a;
}
@ -170,7 +170,7 @@ exports.History = History = function(owner) {
});
}
}
};
};
};
}(/*History*/));
@ -260,7 +260,7 @@ exports.Screen = Screen = function(__window__){
$left = 0,
$availTop = 0,
$availLeft = 0;
log.debug('extending window with screen properties');
__extend__( __window__, {
moveBy : function(dx,dy){
@ -289,7 +289,7 @@ exports.Screen = Screen = function(__window__){
//TODO - modify $locals to reflect change
}
});
log.debug('creating screen');
return {
get top(){
@ -585,14 +585,14 @@ exports.Window = Window = function(scope, parent, opener){
// a read-only reference to the Location object. the location object does
// expose read/write properties
var $location = new Location('about:blank', $document, $history);
// The name of window/frame. Set directly, when using open(), or in frameset.
// May be used when specifying the target attribute of links
var $name = null;
// a read-only reference to the Navigator object
var $navigator = new Navigator();
// a read/write reference to the Window object that contained the script
// that called open() to open this browser window. This property is valid
// only for top-level window objects.
@ -629,7 +629,7 @@ exports.Window = Window = function(scope, parent, opener){
// a read/write string that specifies the current status line.
var $status = '';
__extend__(scope, EventTarget.prototype);
return __extend__( scope, {
get closed(){
return $closed;
@ -801,7 +801,7 @@ exports.Window = Window = function(scope, parent, opener){
i;
for(i=0;i<frames.length;i++){
Envjs.unloadFrame(frames[i]);
}
}
for(i=0;i<iframes.length;i++){
Envjs.unloadFrame(iframes[i]);
}

Просмотреть файл

@ -31,8 +31,8 @@ var Location,
*/
var Envjs = Envjs || require('envjs/platform/core').Envjs,
Document = Document || require('envjs/dom').Document;
var Envjs = Envjs || require('./platform/core').Envjs,
Document = Document || require('./dom').Document;
/**
* @author john resig