2010-01-24 89 views
0

嗨,大家好我已经开发了一个整洁的搜索功能的谷歌地图应用程序 - 但是我注意到,我想有一些像facebook家伙做的一样,有一个硬链接到由ajax查询生成的页面。例如你点击Facebook上的链接,它附加到当前的网址,你可以复制粘贴新的网址来获得请求的页面...我如何实现这样的事情...Url寻找Ajax请求的结果

+0

你在说要为网址添加散列吗?正如在http:// domain/path?query#hash的最后部分一样 – Atli 2010-01-24 09:09:23

回答

1

您可以使用从withing JavaScript中location.hash(URL的#后的部分)设置 “硬链接”。这不会导致页面重新加载,就像更改location.href一样,但是您可以获取该值并在JavaScript中使用它。

考虑这个例子:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<head> 
    <title>Hash test</title> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <script type="text/javascript"> 
    window.onload = function() { 
     // The substring(1) removes the # from the hash. 
     var hash = window.location.hash.substring(1); 

     // Use a default value if no has was passed. 
     if(hash == '') { 
      hash = 'Nothing'; 
     } 

     // Use the value. 
     document.getElementById('selection').innerHTML = hash; 
    } 

    /** Sets the hash and updates the page value */ 
    function setHash(newHash) { 
     window.location.hash = newHash; 
     document.getElementById('selection').innerHTML = newHash; 
    } 
    </script> 
</head> 
<body> 
    <div> 
     <div> 
      <a href="javascript: void();" onclick="setHash('page1');">Page 1</a> | 
      <a href="javascript: void();" onclick="setHash('page2');">Page 2</a> | 
      <a href="javascript: void();" onclick="setHash('page3');">Page 3</a> 
     </div> 
     <div> 
      You have selected: <span id="selection">...</span> 
     </div> 
    </div> 
</body> 
</html> 

当你点击页面链接之一,location.hash改变,浏览器的URL进行更新,并在页面中使用的值被改变。如果用户直接从地址栏中复制URL或对其进行书签,则当再次请求URL时,所选页面将被重新加载。

2

听起来像你想要的使用可用于重新访问当前状态的页面的链接更新浏览器的URL。这可以通过操纵浏览器历史来完成。

的一个很好的解决办法是:

真正简单的历史

http://code.google.com/p/reallysimplehistory/

真正简单的历史是一个轻量级的 JavaScript库的书签和浏览器历史记录中 阿贾克斯管理 /DHTML应用程序。 RSH 将应用程序数据序列化在 内部JavaScript高速缓存中,以便 书签和后退按钮可以是 用于将您的应用程序返回到以前的状态 。

退房这个很好的例子:

http://www.justise.com/2009/01/26/enabling-the-back-button-in-ajax-applications/