2012-04-05 35 views
1
删除#

我的网址产生这样的:只有在IE9jQuery的如何从URL

http://myurl.com/#/categories/posts 

显示如何从URL中移除#和使它像http://myurl.com/categories/posts我的网页上的休息吗?谢谢。

我可以这样使用吗?我如何检测#导致首页没有#。

if ($.browser.msie && parseInt($.browser.version, 10) === 9 && window.location.href.indexOf("#")) 
    { 
     document.location.href = String(document.location.href).replace(/#/, ""); 
    } 

删除#/使用.replace(/#\//, "");提到凯文乙

+0

您是否添加了用于维护历史记录的目的?您将需要提供更多的配置背景。 – Chords 2012-04-05 21:20:37

+0

是的,你还想从哪里删除它?在我的回答中,我假定了地址栏,琼斯在他假设页面中的所有链接时,都不太清楚。 – gotofritz 2012-04-05 21:24:44

回答

6

这不是一个真正的JQuery的工作 - 使用常规的JavaScript这一点。

document.location.href = String(document.location.href).replace(/#/, ""); 

编辑 添加@Kevin B的答案完整性

document.location.href = String(document.location.href).replace("#/", ""); 
+0

介意如果我问,为什么是String构造函数? – NicoSantangelo 2012-04-05 21:21:12

+1

传统 - 我手边没有旧版浏览器,但我记得他们抱怨document.location.href不是字符串。可能是像IE5那样的老东西。 – gotofritz 2012-04-05 21:22:49

+0

我想它会是这样的:),很高兴知道(我想) – NicoSantangelo 2012-04-05 21:26:44

1
$("a").attr("href",$("a").attr("href").replace(/#/, "")); 
4

只需添加锚标记的click事件 '返回false'。

$("#selectorname").click(function(){ 
    if ($.browser.msie && parseInt($.browser.version, 10) === 9 && window.location.href.indexOf("#")) 
    { 
     document.location.href = String(document.location.href).replace(/#/, ""); 
    } 
    return false; /* This prevents url from # */ 
}); 

否则

<a href="#" onclick='return false'>Hey click me, I'm # free</a> 

或者简简单单就

$("#selectorname").click(function(e){ 
    /* some statements */ 
    e.preventDefault(); 
}); 

这样可以防止默认操作不被触发。详细信息here