【问题标题】:jquery or js detect when hit enter on same hashcode url on address barjquery 或 js 检测何时在地址栏上的相同哈希码 url 上输入
【发布时间】:2017-01-11 10:42:17
【问题描述】:

我有一个顶部带有粘性菜单栏的页面。此页面上有一些内部链接。当我单击内部链接时,页面滚动并且具有哈希码 id 的元素移动到顶部。但标题隐藏在粘性菜单中。所以在窗口加载我写了js代码,见下文:

if(window.location.hash) {
        var hash = window.location.hash.substring(1); //Puts hash in variable, and removes the # character
        console.log (hash);
        if(hash && $("#"+hash).length){
            $("#"+hash).css('padding-top', '80px');
        }
        $(window).scroll(function() {
            $("#"+hash).css('padding-top', '0');
        });
    }

当页面加载带有哈希码 url 时,它工作正常。

问题是,当用户点击地址栏且不更改任何内容按回车键时,具有 id 作为哈希码 agian 的元素移动到顶部,这一次我的 js 代码没有运行并且标题隐藏在粘性菜单中。

那么当地址栏被聚焦并按下回车键时,有什么方法可以检测到这个事件?

或者对于这种情况有其他解决方案吗?

谢谢,

【问题讨论】:

    标签: jquery events hashcode address-bar


    【解决方案1】:

    我通过以下逻辑得出了一个简单的解决方案。请注意,我目前不完全知道在其他哪些情况下会触发窗口对象中的“焦点”事件。如果我遇到副作用,我会更新我的帖子。

    据我所知,Chrome 会加载整个页面,而 Firefox 只是按照您的描述进行操作。因此,Chrome 中的焦点事件在页面重新加载之前被触发,这应该考虑到您的实现中。 (我在 'DOMContentLoaded' 中也有重新定位逻辑,所以这种情况对我来说很好)

    window.addEventListener('focus', function() {
    
        // Do the repositioning actions
    
    });
    

    更新

    如果您满足以下条件,也会触发焦点事件:

    • 点击标题栏
    • 最小化和最大化浏览器窗口
    • 在任务栏中切换程序并切换回浏览器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多