- From: Mark Birbeck <mark.birbeck@x-port.net>
- Date: Tue, 14 Feb 2006 10:48:31 -0000
- To: <public-webapi@w3.org>
Hi Maciej, Why a 'window' object? Many of these features are independent of a 'window', and would be better placed on another object...perhaps an application object, or something. Also, many classes of applications that could use a DOM and the features mentioned here, don't need a 'window'. Regards, Mark Mark Birbeck CEO x-port.net Ltd. e: Mark.Birbeck@x-port.net t: +44 (0) 20 7689 9232 b: http://internet-apps.blogspot.com/ w: http://www.formsPlayer.com/ Download our XForms processor from http://www.formsPlayer.com/ > -----Original Message----- > From: public-webapi-request@w3.org > [mailto:public-webapi-request@w3.org] On Behalf Of Maciej Stachowiak > Sent: 14 February 2006 10:30 > To: public-webapi@w3.org > Subject: Window object, very rough cut of proposed content > for first version of spec > > > > Hello people interested in Web APIs, > > Here's my proposal for what to put in the first version of > the window object spec, as IDL with comments. This is a small > subset of what the window interface provides in popular > implementations. These features were selected as follows: > > - Already widely interoparably implemented by mainstream HTML UAs > - Likely to be helpful for SVG or CDR requirements > - Simple (nothing that implies the existence of other > interfaces with their own complex semantics; no events; but > timers and location are > included) > - Likely to be uncontroversial (nothing that would spawn > debates over its moral values, like window.open) > - no networking or XML parsing, that will be in other specs > > More complex features would likely be addressed in a > follow-on version of the spec. > > Please review this rough proposal to see if there's anything > in here that you wildly object to, or anything you think > desperately needs adding. Keep in mind that this is not the > last word on specifying the window object, I would expect > work on a follow-on to start immediately once this spec is > done, covering a much broader range of features. > > > I propose one of the following for the title: > > DOM Global Object (Level 3? or 1.0?) > DOM Window Object (Level 3? or 1.0?) > DOM Level 3 Views (especially if we incorporate AbstractView > and DocumentView interfaces into this spec instead of just referencing > views) > > // or global or window or views? > module window > { > // based on Mozilla and Safari interfaces, Internet > Explorer docs, WHATWG draft > interface Location { > // the current URI > readonly attribute DOMString href; > > // pieces of the URI, per the generic URI syntax > readonly attribute DOMString hash; // (fragment) > readonly attribute DOMString host; // hostname:port > if port specified, > readonly attribute DOMString hostname; // just the > hostname, no port > readonly attribute DOMString pathname; > readonly attribute DOMString port; > readonly attribute DOMString protocol; // scheme > readonly attribute DOMString search; // query > > void assign(in DOMString url); // go to the requested URL > // does it make sense to spec reload and replace > without specifying history behavior at all? > void replace(in DOMString url); > void reload(); > > // same value as href; not all implementations have > this explicitly but toString is always available > // in ECMAScript, and probably this should be > explicit for the sake of Java. Or we could skip it since > // it matches href. > DOMString toString(); > }; > > // for ECMAScript there is a special case for this type, > it can be either a string or a function. > // In the string case, the string is eval'd in global > scope when the timer fires. > // in the function case JS allows extra arguments after > the milliseconds argument; the function > // is called with extra arguments if any when the timer fires > interface TimerListener { > // who knows - what interface would work for non-JS > languages? this could just be an EventListener > // but then we would have to define TimerEvent; it > might also be handy to expose that to JS, in which > // case this spec would incorporate one new feature > for HTML UAs to implement. But I would expect it > // to be a simple one. > }; > > // should this interface be called something else - > Global, DOMWindow, DOMGlobal? > // should specify that for ECMAScript execution this > provides the global scope > // based on Mozilla and Safari implementations, Win IE > docs, Web Apps 1.0 draft (some also in SVG Tiny 1.2 draft) > interface Window : views::AbstractView { > // AbstractView has a document attribute of type > DocumentView, should we drop the charade and admit it is a > // Document? > > // self-reference > readonly attribute Window window; > > // self-reference - why both? because both are used > readonly attribute Window self; > > // name attribute of referencing > frame/iframe/object, or name passed to window.open, > // does it make sense to spec this without being > html- specific or defining open? > attribute DOMString name; > > // global object of containing document > readonly attribute Window parent; > > // global object of outermost containing document > readonly attribute Window top; > > // referencing <html:frame>, <html:iframe>, > <html:object>, <svg:foreignObject>, <svg:animation> or other > // embedding point, or null if none > readonly attribute core::Element frameElement; > > // Location object representing the current location > // assigning this has special behavior in > ECMAScript, but it is otherwise read only > // specifically, in ES a string URI can be assigned > to location, having the same effect as location.assign(URI) > readonly attribute Location location; > > // should timers allow more than long, maybe a > floating point type? don't think anyone's timers have more precision > // one-shot timer > long setTimeout(in TimerListener listener, in long > milliseconds); > void clearTimeout(in long timerID); > > // repeating timer > long setInterval(in TimerListener listener, in long > milliseconds); > void clearInterval(in long timerID); > }; > }; > > > Other possible things to add (potentially more controversial): > > - SVG uDOM style timers - way less convenient in JS but maybe > better for Java > - Web Apps 1.0 proposed version of setTimeout / clearTimeout > that take a language name as third parameter(*) > - SVG uDOM window.gotoLocation(in URI) - same effect as > window.location.assign(URI) > - IE extension window.navigate(in URI) - same effect as > window.location.assign(URI) > - an interface that adds contentWindow property to DOM > elements that have contentDocument; perhaps an issue for > individual language specs > - due to the dependence on AbstractViews, Document is > required to have a defaultView attribute that points to the > window, perhaps it is desirable to add aliases for it, e.g. > "window" as in Web Apps 1.0 draft or "global" as in SVG uDOM > - yet another alias for the window object's self-reference > named "global" > > (*) - I think this is unneeded, because there's no need to > enable one language to set a timer that will eval code in > another language. I think the string parameter versions of > these should instead be defined as an ECMAScript binding > feature and not in the IDL. > > >
Received on Tuesday, 14 February 2006 10:49:43 UTC