w3c / IntersectionObserver

Intersection Observer
https://www.w3.org/TR/intersection-observer/
Other
3.62k stars 526 forks source link

Define referenceable algorithms for IntersectionObserver methods #427

Closed zcorpan closed 3 years ago

zcorpan commented 4 years ago

In https://github.com/whatwg/html/pull/5510 I'm trying to specify <img loading=lazy> in terms of IntersectionObserver as per discussion in https://github.com/whatwg/html/issues/5236

As @domfarolino pointed out, in web specs we try not to call public APIs, but instead want to call the underlying algorithm directly. (Also see https://github.com/w3c/IntersectionObserver/issues/401 )

For lazy-loaded images currently, we need to

zcorpan commented 4 years ago

When fixing this, also fix (or file an issue to fix) the "XXX" issues introduced in https://github.com/whatwg/html/pull/5510

szager-chromium commented 3 years ago

Is there an idiomatic way to do this? Is it just a matter of moving the language from the public API methods into new sections under Processing-Model/Algorithms, and referring to them from the public API description?

I must say, it seems needlessly complicated to add this level of indirection to the spec. Could you instead follow the example given in issue #55 for getBoundingClientRect, and say something like:

"Perform the steps described in the IntersectionObserver spec for the IntersectionObserver constructor." "Perform the steps described in the IntersectionObserver spec for the observe() method."

?

zcorpan commented 3 years ago

The usual way is a level of <dfn> abstraction. But it doesn't need to be in a different section, that's up to how you want to structure the spec. See for example https://fullscreen.spec.whatwg.org/#dom-document-exitfullscreen

I don't think the example for getBoundingClientRect is a great one to follow; it's less explicit, and I don't see a good reason not to change the cssom-view spec.

I think there's an argument to be made that this is a bit annoying for writing specs and we could do something to make it easy to do the right thing, but for now, we need an extra dfn when other specs want to reference algorithms.

zcorpan commented 3 years ago

Thanks for fixing! I tried today to update the HTML standard and ran into further issues, see https://github.com/w3c/IntersectionObserver/issues/464