Ajax Deep Linking是否可以在链接中预先加入哈希值('#')

我见过的大多数jquery深层链接插件都要求我将“#”附加到我的链接上。这是一个例子:
<a href="#page1.html">Page 1</a>
甚至twitter都这样做(但是,twitter遵循Google规范,使用
#!
进行可抓取链接,jquery深层链接库如Jquery BBQ和Jquery Address也支持)。 我用新的Twitter关闭了Javascript,但它不起作用。我问这个问题是否可以应用深层链接,即使使用Javascript关闭也仍然有一个功能性网站。 提前致谢!     
已邀请:
不 - 如果你想使用AJAX深层链接,你将不得不以这种方式工作。锚是URL的唯一部分,可以在不重新加载页面的情况下进行更新。它通常不会发送到服务器,因此它总是由浏览器处理。 您可以做的一件事是在
a
标签中使用实际链接,然后使用jQuery更新链接:
<a href="page1.html" class="ajaxLoad">Page 1</a>

<script>
$(function(){
  $("a.ajaxLoad").each(function(){ this.href = '#' + this.href })
});
</script>
关闭JavaScript后,当用户点击链接时,会将用户重定向到“page1.html”。否则,链接将更改为锚点,您应该能够使用深层链接代码将其选中。这样的好处是非JavaScript浏览器将能够正确使用链接(这包括搜索引擎蜘蛛)。 编辑:您知道,您可以做一些事情而不是使用JavaScript来改变它。例如,您可以附加到链接的单击处理程序并使用
load
或其他内容来更改要加载页面的区域。
$("a.ajaxLoad").click(function(e){
    e.preventDefault();
    $("#content").load(this.href + ' #content');
});
    
这应该可以使用HTML5。我最近搜索了关于这个主题的信息,发现了这个非常有趣的图书馆History.js。 它在可能的情况下使用HTML5进行深度链接而不使用散列,而HTML4则使用散列(如果您愿意,则使用HTML)。 History.js作者的这篇文章绝对值得一读。     
Anchor是唯一可以在没有完整页面重新加载的情况下更改的部分。所以根据定义你没有别的办法。另外,根据定义,锚没有传递给服务器,因此关闭javascript - 这显然不起作用。     

要回复问题请先登录注册