【问题标题】:JavaScript page jump when updating element using ajax使用 ajax 更新元素时​​ JavaScript 页面跳转
【发布时间】:2012-04-25 18:52:53
【问题描述】:

我有一个垂直适合窗口的页面。当用户单击链接时,我通过 ajax 获得另一个页面并将其插入所需的元素。 一切正常,但是当用户点击另一个链接时,页面会跳起来,这让我很烦。 我试过使用

<a href="#" onClick="showRoom('five');return false;" class="highlight">
//and
<a href="javascript:void(0);" onClick="showRoom('five');return false;" class="highlight">

它在 IE 和 Firefox 中都不起作用 - 它继续跳跃。

有什么好的工作技巧可以提供帮助吗?

我认为它必须与更新有关。当我单击链接时 - 首先,显示加载图标。只有这样,当报告表可用时,它才会加载到而不是图标中。因此,浏览器会在显示信息时添加滚动条,但在报告切换之间消失并被小 LOADING 图标取代。

我认为当我点击更新链接时我需要捕获滚动条位置,然后,在 ajax 更新页面后,我需要调用另一个函数来滚动回之前的滚动条位置

这就是我“解决”问题的方式,直到找到真正的解决方案:

document.getElementById(showCoursesArea).innerHTML= '<center><img src=\"images/working.gif\"><h1><br><h1><br><h1><br><h1><br><h1><br><h1><br></center>';

它让我的页面很长;因此 ajax 更新非常适合。

【问题讨论】:

  • 你能把它发布到 jsFiddle 中吗?
  • “跳起来”是什么意思?请更具体一点
  • 看到右边的vscrollbar了吗?它在更新期间消失了一小段时间 - 因为报告表消失了,而我有 LOADING ICON。然后,Ajax 从数据库中拉出新表并填写我的
    -滚动条再次出现,但页面没有返回报告
  • 到目前为止,我是如何“解决”这个问题的:我在 LOADING 图标后添加了一堆空格 - 这样浏览器就可以保持原来的一些页面高度。 document.getElementById(showCoursesArea).innerHTML= '&lt;center&gt;&lt;img src=\"images/working.gif\"&gt;&lt;h1&gt;&lt;br&gt;&lt;h1&gt;&lt;br&gt;&lt;h1&gt;&lt;br&gt;&lt;h1&gt;&lt;br&gt;&lt;h1&gt;&lt;br&gt;&lt;h1&gt;&lt;br&gt;&lt;/center&gt;';

标签: javascript ajax


【解决方案1】:

'#' 会将用户带回到页面顶部,所以我通常使用 void(0)。或者,如果您说第二个选项也不起作用,则删除 href 并尝试

或者只是尝试一下

<a href="javascript:myJsFunc()">Link Text</a>

<a onclick="javascript:myJsFunc()">Link Text</a>

<a href="#0" onclick="myJsFunc()">Link Text</a>

因为 id "0" 永远不会出现在页面上,因此不会发生任何事情。

【讨论】:

    【解决方案2】:

    当您单击带有href="#" 的链接时,它实际上是链接到文档的顶部。您实际上可以完全删除 href 属性。

    【讨论】:

    • 5号房间
    • 或者在新页面添加一个锚点。这样它可能会向下滚动一点
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签