当前位置: 首页 > 面试题库 >

无需页面滚动即可修改location.hash

公西苗宣
2023-03-14
问题内容

我们有一些页面使用ajax来加载内容,并且在某些情况下需要深度链接到页面。与其链接到“用户”并告诉人们单击“设置”, 不如 将其链接到
user.aspx#settings, 这很有帮助。 __

为了使人们能够提供指向各节的正确链接(用于技术支持等),我将其设置为在单击按钮时自动修改URL中的哈希。当然,唯一的问题是,发生这种情况时,它还会将页面滚动到该元素。

有办法禁用它吗?到目前为止,这是我目前的做法。

$(function(){
    //This emulates a click on the correct button on page load
    if(document.location.hash){
     $("#buttons li a").removeClass('selected');
     s=$(document.location.hash).addClass('selected').attr("href").replace("javascript:","");
     eval(s);
    }

    //Click a button to change the hash
    $("#buttons li a").click(function(){
            $("#buttons li a").removeClass('selected');
            $(this).addClass('selected');
            document.location.hash=$(this).attr("id")
            //return false;
    });
});

我曾希望这样做return false;可以阻止页面滚动-但这只会使链接根本不起作用。所以这只是暂时的注释,所以我可以导航。

有任何想法吗?


问题答案:

我想我可能已经找到了一个相当简单的解决方案。问题在于URL中的哈希也是滚动到页面上的元素。如果我只是在哈希之前添加一些文本,那么它不再引用现有元素

$(function(){
    //This emulates a click on the correct button on page load
    if(document.location.hash){
     $("#buttons li a").removeClass('selected');
     s=$(document.location.hash.replace("btn_","")).addClass('selected').attr("href").replace("javascript:","");
     eval(s);
    }

    //Click a button to change the hash
    $("#buttons li a").click(function(){
            $("#buttons li a").removeClass('selected');
            $(this).addClass('selected');
            document.location.hash="btn_"+$(this).attr("id")
            //return false;
    });
});

现在,URL page.aspx#btn_elementID在页面上显示为非真实ID。我只是删除“ btn_”并获取实际的元素ID



 类似资料:
  • 问题内容: 我正在编写一个页面,其中我只想将原始JavaScript代码用于UI,而不会受到插件或框架的干扰。 现在,我正在努力寻找一种无需使用jQuery即可平滑滚动页面的方法。 问题答案: 尝试使用此平滑滚动演示或类似的算法: 使用获取当前的最佳位置 获取元素的位置,直到要滚动到的位置: 进行for循环到达该位置,这将非常快,或者使用计时器进行平滑滚动,直到使用 安德鲁·约翰逊的原始代码:

  • 右上角的图片: 准备一个图片top.bmp,在 ; MUI 预定义常量 下面添加以下代码: !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_RIGHT !define MUI_HEADERIMAGE_BITMAP "top.bmp" 注释: 第1行:定义上面图片。(如果不定义,默认显示的是安装程序图标) 第2行:定义图片的位置。本行定义显示在右边。

  • 我想将我的导航从透明背景更改为白色背景。导航应该缩小,徽标应该消失。 它应该与此页面上的完全相同:https://www.praxis-loeber.de 我已经为它编写了jQuery代码,但不幸的是,它仍然不起作用。 如果有人能告诉我错误在我的代码中,我会非常高兴。 这是我的代码:

  • 问题内容: 我正在使用python API将一些Selenium RC测试转换为Selenium WebDriver。在Selenium WebDriver中,我注意到这似乎要等待整个页面加载后才能继续。有没有一种方法可以不等待页面加载?我要请求的某些页面具有很多外部资源,这些资源可能需要很长时间才能加载。我宁愿等待DOM上的元素出现,也不愿等待所有内容加载。因此,我的某些测试在WebDriver

  • 我正在使用python api将一些Selenium RC测试转换为Selenium WebDriver。在Selenium WebDriver中,我注意到似乎要等待整个页面加载才能继续。有没有办法不等待页面加载?我请求的一些页面有很多外部资源,可能需要很长时间才能加载。我宁愿等待DOM上的元素出现,也不愿等待所有内容加载。因此,我的一些测试在WebDriver中花费的时间似乎是原来的两倍。

  • 在我正在开发的一个网站中,我有一个div,用于移动版的主菜单。 这个div是固定的(下面是css),但在某些情况下,它的高度大于设备的高度。 我想将div样式设置为但是,如果内容溢出设备的高度,我需要它在没有滚动条的情况下可滚动,并且不移动网站的其余部分。 CSS: JAVASCRIPT: HTML格式: 我能实现我假装的东西吗?