- From: Paul Libbrecht <paul@activemath.org>
- Date: Tue, 14 Feb 2006 13:10:35 +0100
- To: Maciej Stachowiak <mjs@apple.com>
- Cc: public-webapi@w3.org
Does copy and paste or drag-and-drop not come into play here ? paul Maciej Stachowiak wrote: > > > 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 12:10:52 UTC