Maciej Stachowiak wrote:

On Jun 6, 2008, at 12:01 PM, Ian Hickson wrote:


On Sat, 1 Mar 2008, Jonas Sicking wrote:

I very much agree it's an edge case and would be fine with leaving it
undefined.

Well, right now it's implicitly defined that changing the base changes
anything refering to that base instantly. I'm not really sure how to
unspecify that without adding a really weird clause like "in the event
that the attribute is changed, user agents may, whenever convenient,
pretend, for the sake of url resolution, that it has not changed".


I have made notes in the spec that this is an area that needs defining.
Right now I'm leaning towards defining a "base href change notification
behaviour" for all elements that have URI attributes or are otherwise
sensitive to base href changes, and defining that when the base href
changes, all the elements in the document with such behaviour defined
should have that behaviour activated (this would, in the simple case, just
be a walk over the document with a virtual method call per element; it
might be a bit slow for some documents, but then this is a very rare
occurance anyway). We would also invoke this behaviour on the entire
subtree of an element whenever that element is inserted into a different
document, in case it matters in any cases.

In practice I think this only actually affects :link/:visited and url()
rules in style="" attributes. I plan on making <img>/<iframe>/<link
rel=stylesheet> etc not reload their content if the base href changes
(though that does mean that .src and .href will end up pointing to URIs
that aren't actually what was loaded). I can't think of any other cases
that are sensitive off the top of my head, but I'll be thorough if I do
end up specifying this.

The question is, are people ok with that plan?

It seems weird for src and href attributes to have a URI other than what the element has loaded or is loading - this would be the only case where they may not match. (Also, would setting href or src to itself in such a case trigger a load of a different resource?)

I agree it's undesirable, but I don't think it's a particularly big problem. I would imagine it is extremely rare that any pages out there is ever going to run in to this. We've never handled dynamic changes to <base> in gecko, and I've never heard any complaints about it. Similarly we end up in the situation where .href/.src returns a different URI than what was loaded, but I don't think that's a big deal either.

I have to admit I am not especially excited about implementing instant dynamic updates of everything in the document referencing a URI, whether it triggers a load or not, when the <base> element is changed. That seems like a lot of coding and testing work solely to serve a very unimportant edge case that right now likely no one depends on. In general if the spec requires significant implementation work for something that has no real user or author benefit, just because that is easier to define, then I think we have chosen poorly.

I feel exactly the same way. This is something that no-one is going to run in to most likely. And if they do it seems like something they could easily fix.

I honestly think this is a case where the web would do better with implementations spending time fixing other issues than adding code that no real website is going to trigger.

/ Jonas

Reply via email to