如何跟踪一个javascript行为的起源,特别是-添加哈希到我的url

How to trace origin of a javascript behavior, specifically - adding hash to my urls

本文关键字:特别是 起源 添加 哈希 我的 url 跟踪 何跟踪 javascript 一个      更新时间:2023-09-26

有人写了一些不好的代码,导致我们网站上一些url的末尾添加了一个哈希值。这也导致了一个额外的历史记录项,没有哈希值,所以用户必须点击"返回"两次,而他们只需要点击一次。

在Chrome的开发者控制台,我已经尝试搜索元素和所有的来源(ctrl-shift-f)的"历史"(只使用一次,不明显相关),以及"#","哈希",和其他的东西,我还没有发现什么是添加哈希符号到url和改变历史。

有办法追踪吗?

编辑:

我试着在Chrome浏览器的源选项卡中设置一个断点,检查事件监听器断点/Load/hashchange下的框。但是chrome并没有停止。我不知道为什么。

但是下面的命令可以阻止脚本在hashchange .

我在添加哈希之前在Chrome中设置了一个断点,然后在控制台中添加了以下内容:

jQuery(window).on('hashchange',function(){ 
        debugger;
});

然后我继续脚本,它又暂停了,大概是在添加哈希之后(它现在在那里)。

现在我如何查看当前的执行状态?谁触发了hashchange?

将这行JS添加到它总是执行的地方:

jQuery('a').on('click',function( e ) { 
    e.preventDefault();
});

或者使用:

跟踪特定的a元素
jQuery('a').on('click',function( e ) { 
    console.log(this);
});

但是即使你跟踪它,你也不能做任何事情,因为如果你删除href="#"点击'a'会刷新页面,所以你需要防止'a'标签的默认行为