当前位置: 首页 > 知识库问答 >
问题:

在页面加载后滚动到锚定(anchor)

华永新
2023-03-14

我需要设置一个ng click事件,以便它加载一个新页面,然后,一旦页面加载完毕,滚动到页面上的一个定位点。我已经尝试了这篇文章中提出的每一个解决方案,但我无法让它正常工作。

大多数解决方案都围绕着滚动到已经加载的页面上的锚定。我需要在加载新页面后出现滚动。

<div class="see-jobs-btn" ng-click="$event.stopPropagation();goToResultJobs(r)">See Jobs</div>

这表示“配置文件卡”中的按钮。当用户点击卡片时,它会将他们带到一个个人资料页面。但是,当他们单击按钮时,它需要将他们带到该配置文件页面的#jobs部分(因此代码中goToResultJobs(r)前面的$stopprogation())。

下面是我的goToResultJobs方法的样子。

$scope.goToResultJobs = function(result) {
    var profileUrl = result.slug;
    window.location = profileUrl;
};

我尝试过使用$anchorScroll,只是将锚点硬编码到profileUrl,但两者都不起作用。我对Angular还不太熟悉,所以我不知道我在这里遗漏了什么。

更新1:尝试使用$timeout

这是我的ResultsCtrl中的goToResultJobs方法,当用户单击按钮时触发:

$scope.goToResultJobs = function(result) {
    var url = window.location + result.slug + '#jobs';
    location.replace(url);
};

加载/name#jobs路径,该路径调用下面的ProfileCtrl:

app.controller('ProfileCtrl', ['$scope', '$http', '$timeout', '$location', '$anchorScroll',
function($scope, $http, $timeout, $location, $anchorScroll) {
    if(window.location.hash) {
        $timeout(function() {
            console.log('TEST');
            // $location.hash('jobs');
            // $location.hash('jobs');
            $anchorScroll();
        }, 1000);
    };
}]);

此设置似乎有效,因为TEST仅在单击“作业”按钮时显示在控制台中,而在用户仅单击配置文件时不显示。我现在面临的问题是,页面开始加载,url栏中的路径更改为/name\jobs,但在页面完成加载之前,jobs从url中剥离。因此,当调用$anchorScroll()时,哈希中没有可滚动到的锚标记。

共有3个答案

周威
2023-03-14

在我的例子中,在路由器中使用片段不起作用<代码>视口滚动条也不工作。即使他们这样做了,我还是希望保持URL的干净。所以,这就是我使用的:

(document.querySelector('.router-wrapper') as HTMLElement)?.scrollIntoView();

黎腾
2023-03-14

天哪,这可以通过简单地添加autoscroll="true"到您的模板来实现:

文献资料

韦阳辉
2023-03-14

因此,正如所指出的,$anchorScroll必须在页面呈现后发生,否则锚不存在。这可以使用$timeout()来实现。

$timeout(function() {
  $anchorScroll('myAnchor');
});

你可以看到这个砰的一声。确保以弹出模式查看(输出屏幕右上角的蓝色小按钮)。

 类似资料:
  • 问题内容: 我想让浏览器仅使用JavaScript即可将页面滚动到给定的锚点。 我在HTML代码中指定了或属性: 要么 通过导航到,我希望获得与您相同的效果。应滚动页面,使锚点位于页面可见部分的顶部附近。 问题答案: 完全不需要jQuery!

  • 问题内容: 我有一个网页,当向下滚动页面直到每个项目都被加载时,它会不断加载新项目。 我正在使用Java中的Selenium,需要向下滚动到页面底部才能加载所有内容。 我尝试了几种不同的选项,例如滚动到页面底部的元素: 不过,这只会向下滚动一次,然后网页会继续加载。 我也尝试过这种方法,该方法也只能向下滚动一次,因为它只考虑了浏览器的高度。 非常感谢您的帮助。 问题答案: 我将为此提供Python

  • 我有一个网页,不断加载新项目时,向下滚动页面,直到每个项目都加载。 我正在使用Java中的Selenium,需要向下滚动到页面底部才能加载所有内容。 我尝试了几种不同的选项,比如滚动到页面底部的某个元素: 这只是向下滚动一次,然后网页继续加载。 我也尝试过这种方法,它也只向下滚动一次,因为它只考虑了浏览器的高度。 任何帮助都非常感谢。

  • 问题内容: 我的页面上有一个div: 如何使div滚动到div的底部?不是页面,只有DIV。 问题答案: 此处的其他解决方案实际上不适用于内容很多的div -它“最大化”向下滚动到div的高度(而不是div 内容 的高度)。因此,它们将起作用,除非您在其内容中具有div高度的两倍以上。 这是正确的版本: 或jQuery 1.6+版本: 或动画:

  • 我需要一些帮助如何保持保持当前锚链接活动后刷新页面。实际上,我有这个垂直的navbar菜单(http://prntscr.com/fz9yct),默认情况下,我将类active添加到中,所以当我们打开页面时,navbar看起来就像您在屏幕截图中看到的那样。 当我滚动,或单击任何其他navbar列表项,一切工作良好,平滑滚动到适当的部分,并删除类活动从上一个锚链接,并添加到适当的。 问题是当我刷新p

  • 本文向大家介绍js实现滚动条滚动到页面底部继续加载,包括了js实现滚动条滚动到页面底部继续加载的使用技巧和注意事项,需要的朋友参考一下 这个实例应该说可以很简单,直接使用jQuery的方法来处理也是可以的。但本文底层使用原生的js来处理,遇到一些小知识点可以分析一下也算有所得。 原理很简单,就是为window添加一个scroll事件,浏览器每次触发scroll事件时判断是否滚动到了浏览器底部,如果