尝试使用html锚点链接到页面的一部分时遇到问题。问题是我链接的页面有几个AJAX调用需要时间才能完成。这使我无法链接到锚点。
<a href="domain.com/view?id=<?=$article['id']?>#anchor">
应该链接到我的视图页面上的评论部分
//Non ajax content
<a id="anchor"></a>
<?php $this->widget('application.components.DisqusWidget', array('article' => $id));?> //The offending AJAX
如果我转到domain.com/view?id=123,请加载,然后将#anchor
添加到我带到相应部分的网址。但是domain.com/view?id=123#anchor
只会把我带到顶端。有解决方法吗?
答案 0 :(得分:1)
在Ajax回调中,您可以添加
location.href=location.hash;
所以它会在ajax调用结束后跳转。
答案 1 :(得分:1)
我猜你的Disqus小部件会在页面底部附加数据 只有这样,你的页面足够长,才能真正滚动到你的锚点。
解决问题的一种方法是将JavaScript处理程序(回调)附加到注释部分的加载函数,该函数将在AJAX请求完成后立即触发。
在该回调函数中,您可以触发滚动到您的锚点,如下所示:
window.location.hash = '#anchor';