1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 15:07:45 +00:00

LibWeb: Scroll to the "start" in Document::scroll_to_fragment()

Implements spec comment.
This commit is contained in:
Aliaksandr Kalenik 2023-12-19 15:52:56 +01:00 committed by Andreas Kling
parent 7458c27c4b
commit c5d91dce8b
3 changed files with 40 additions and 2 deletions

View file

@ -0,0 +1 @@
Take test The page has been scrolled to y: 562.59375

View file

@ -0,0 +1,35 @@
<!DOCTYPE html>
<style type="text/css">
#top {
margin-top: 500px;
padding-top: 100px;
background-color: navy;
width: 100%;
height: 50px;
}
.picture {
background: magenta !important;
position: relative;
height: 50px;
width: 100%;
margin-bottom: 1000px;
}
</style>
<a style="font-size: 50px" href="#top" id="link">Take test</a>
<div id="top"></div>
<div class="picture"></div>
<script src="include.js"></script>
<script>
asyncTest(done => {
let completed = false;
document.addEventListener("scroll", event => {
if (completed)
return;
completed = true;
println("The page has been scrolled to y: " + window.scrollY);
done();
});
document.getElementById("link").click();
});
</script>

View file

@ -1842,8 +1842,10 @@ void Document::scroll_to_the_fragment()
// FIXME: 5. Run the ancestor hidden-until-found revealing algorithm on target.
// 6. Scroll target into view, with behavior set to "auto", block set to "start", and inline set to "nearest". [CSSOMVIEW]
// FIXME: Do this properly!
(void)target->scroll_into_view();
ScrollIntoViewOptions scroll_options;
scroll_options.block = Bindings::ScrollLogicalPosition::Start;
scroll_options.inline_ = Bindings::ScrollLogicalPosition::Nearest;
(void)target->scroll_into_view(scroll_options);
// 7. Run the focusing steps for target, with the Document's viewport as the fallback target.
// FIXME: Pass the Document's viewport somehow.