63 lines
1.8 KiB
JavaScript
Executable File
63 lines
1.8 KiB
JavaScript
Executable File
"use strict";
|
|
var DOMImplementation = require('./DOMImplementation');
|
|
var EventTarget = require('./EventTarget');
|
|
var Location = require('./Location');
|
|
var sloppy = require('./sloppy');
|
|
var utils = require('./utils');
|
|
|
|
module.exports = Window;
|
|
|
|
function Window(document) {
|
|
this.document = document || new DOMImplementation(null).createHTMLDocument("");
|
|
this.document._scripting_enabled = true;
|
|
this.document.defaultView = this;
|
|
this.location = new Location(this, this.document._address || 'about:blank');
|
|
}
|
|
|
|
Window.prototype = Object.create(EventTarget.prototype, {
|
|
_run: { value: sloppy.Window_run },
|
|
console: { value: console },
|
|
history: { value: {
|
|
back: utils.nyi,
|
|
forward: utils.nyi,
|
|
go: utils.nyi
|
|
}},
|
|
navigator: { value: require("./NavigatorID") },
|
|
|
|
// Self-referential properties
|
|
window: { get: function() { return this; }},
|
|
self: { get: function() { return this; }},
|
|
frames: { get: function() { return this; }},
|
|
|
|
// Self-referential properties for a top-level window
|
|
parent: { get: function() { return this; }},
|
|
top: { get: function() { return this; }},
|
|
|
|
// We don't support any other windows for now
|
|
length: { value: 0 }, // no frames
|
|
frameElement: { value: null }, // not part of a frame
|
|
opener: { value: null }, // not opened by another window
|
|
|
|
// The onload event handler.
|
|
// XXX: need to support a bunch of other event types, too,
|
|
// and have them interoperate with document.body.
|
|
|
|
onload: {
|
|
get: function() {
|
|
return this._getEventHandler("load");
|
|
},
|
|
set: function(v) {
|
|
this._setEventHandler("load", v);
|
|
}
|
|
},
|
|
|
|
// XXX This is a completely broken implementation
|
|
getComputedStyle: { value: function getComputedStyle(elt) {
|
|
return elt.style;
|
|
}}
|
|
|
|
});
|
|
|
|
utils.expose(require('./WindowTimers'), Window);
|
|
utils.expose(require('./impl'), Window);
|