在不滚动页面的情况下向url添加带有javascript的哈希?
在不滚动页面的情况下向url添加哈希? 使用javascript在不滚动页面的情况下向url添加带有javascript的哈希?,javascript,url,hash,scroll,Javascript,Url,Hash,Scroll,在不滚动页面的情况下向url添加哈希? 使用javascript 我打开一页 我向下滚动 我单击添加散列(可能带有值#test)的链接(示例:) 该页面不能向后滚动到顶部 如何做到这一点 注: 只是检查是否可以禁用移动,即使有id=“test”的标记 到目前为止,返回错误;可以正常工作(支持没有javascript的用户),也可以避免在html中出现id,但数字之类的东西没有问题,比如1、2、3(它们无论如何都不允许作为id) 所有答案都很好,没有什么新的或突破性的,也没有关于如何打破默认功能的
感谢您抽出时间回答。页面上没有的任何哈希都会导致这种行为。例如,在本页上。(链接使用Chrome2.0和IE6(目前我仅有的浏览器)进行了测试。)
因此,如果您的URL导致您转到页面顶部,请确保页面上没有id或名称为该地址的内容。每个浏览器都会将哈希值解释为“转到该DOM id”。你可以试试我能想到的两件事:
下面的任何一个示例都应该满足您的要求:
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>
<a href="pleaseEnableJS.html"
onclick="window.location.hash = '#test1';return false;">Test 1</a>
<a href="#test2">Test 2</a>
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>
如果有任何元素具有
id=“test1”
或id=“test2”
或,并且包含一个HTML和JavaScript的小示例,但没有按预期工作。Welbog的答案很好,但在浏览器的地址栏中保留了#nonexistantanchor
哈希
要使用jQuery做到这一点,您可以向锚添加一个类,并使用该方法禁用导航和对url的更改
<a href='#' class="nodefault">Clickable</a>
<script>
$("a.nodefault").click(function(event) {
event.preventDefault();
});
</script>
$(“a.nodefault”)。单击(函数(事件){
event.preventDefault();
});
当然,美学上的两难选择是选择优雅的url还是不使用javascript的解决方案。“#”有一个真正的语义含义,即“在这个URI上标识的资源部分”。你为什么要打破这个标准期望?历史和后退按钮。我个人更喜欢用经典的基于标准的方式来实现,但是很多人都希望使用ajax。在我发布了这个问题之后(或者在发布过程中),google和deviant art实现了这个“坏”的方法,正如您在搜索内容时所看到的:)现在,最好的新方法是使用可能的重复项来加载ajax页面。@erdom这个问题是重复的吗?我的在2009年9月17日被问到,他的在2009年9月28日被问到。他的是复制品。:)经过这么长时间的思考,我意识到你是绝对正确的。