- From: David Flanagan <dflanagan@mozilla.com>
- Date: Tue, 05 Jul 2011 12:45:18 -0700
- To: Boris Zbarsky <bzbarsky@MIT.EDU>
- CC: Olli@pettay.fi, Olli Pettay <Olli.Pettay@helsinki.fi>, Adam Klein <adamk@chromium.org>, Ojan Vafai <ojan@chromium.org>, public-webapps@w3.org
On 7/5/11 12:12 PM, Boris Zbarsky wrote: > On 7/5/11 3:00 PM, David Flanagan wrote: >> Boris, you have hinted that making the DOM readonly would cause all >> kinds of problems, such as: a mutation listener that attempted to set >> certain global variables would throw an exception. I'm coming at this >> from the perspective of DOM Core and haven't gotten into the details of >> HTML yet, so I don't understand what these problems are. Could you >> provide more detail? > > The problem is that web developers don't have a firm grasp on what's > part of the DOM and what's part of ECMAScript. And libraries that > hide underlying things don't help it any. > > So in practice, a web developer looking at code that involves a set > call has no way to tell whether it will work in a given web browser in > a mutation listener if listeners disable DOM mutations. A web > developer looking at a function call has no way to tell either. I've assumed that mutation events are an advanced feature that will mostly be used by sophisticated developers and library authors. But I see your point. I was worried you were saying that there quirks to the DOM itself that made a read-only mode impractical. > > The only way to make it possible to tell without learning every inch > of the specs is to not give any access to DOM objects at all from > mutation listeners. Then any code you write there will work. But that option is completely impossible, right? Not an avenue to investigate. >> Note that this isn't a capability system: we don't have to prevent the >> listener from having any access to the DOM. That wouldn't be possible >> and the listeners need read access to the document and its nodes. We >> just need to make any modification attempts fail. > > And I'm saying that this will lead to hard-to-diagnose bustage due to > unintended DOM modifications that the caller doesn't even realize are > DOM modifications. > At least the bustage would fail fast with an exception. We could define a new RECURSIVE_MUTATION_ERR exception code that would make it easy to diagnose the problem. I have to agree with jjb: developers won't like a readonly DOM in mutation listeners, but the problems that it will cause are not as bad as those that arise when recursive mutations are allowed. David > -Boris >
Received on Tuesday, 5 July 2011 19:45:46 UTC