您好我正在建立这个网站:http://www.freiheitmedia.com/en/。它是用Themify Ultra主题构建的。
我的目标是在滚动或点击链接时删除网址中的#something部分。
我需要使用JavaScript / jQuery,因为没有基于主题的解决方案,支持人员无法帮助我。
我已经测试过并知道以下代码会替换我想要的网址:
history.replaceState("",document.title,window.location.pathname + window.location.search);
现在,问题是我似乎无法获得" hashchange"要触发的事件。我将以下代码放在页脚中,并且在两种情况下都没有达到警告声明:
<script>
window.addEventListener("hashchange", function(e){
alert("hiii");
});
</script>
或
<script>
window.addEventListener("hashchange", function(e){
alert("hiii");
}, false);
</script>
我怀疑主题设置可能会阻止hashchange事件,但这只是猜测。
你们有没有想过为什么&#34; hashchange&#34;没有解雇?
答案 0 :(得分:0)
来自您的澄清评论:
当您访问该网站并向下滚动时,您会看到该网址会根据您所在的部分而变化。具体而言,#part会发生变化。我的目标是防止这种行为并且一直有一个干净的URL(没有任何#hashes)。
最好的方法是通过更新哈希来找到响应滚动事件的插件(这可能是有帮助的,大概是;如果你将它加入书签,则会将你带回页面的那一部分)并转向它关了。使用页面上的插件来控制哈希是一个坏主意。
非常好的第二名:
由于hashchange
未触发,插件必须使用history
的{{1}}或replaceState
或类似设置哈希,因为它不会触发pushState
。您可以使用自己的剥离哈希片段的版本替换这些函数:
hashchange
同样,但是,最好通过添加散列片段并禁用它来找到响应滚动事件的内容。