3

我见过的大多数 jquery 深度链接插件都要求我将“#”附加到我的链接中。这是一个例子:

<a href="#page1.html">Page 1</a>

甚至 twitter 也这样做(但是,twitter 遵循 Google 的可抓取链接规范,使用#!, 也受 jquery 深度链接库(如 Jquery BBQ 和 Jquery Address)支持)。

我用新的 twitter 关闭了 Javascript,但它不起作用。我问这个问题是为了知道我是否可以应用深度链接并且即使关闭 Javascript 仍然有一个功能性网站。

提前致谢!

4

3 回答 3

5

这应该可以使用HTML5。我最近搜索了有关此主题的信息,发现了这个非常有趣的库 History.js

它在可能的情况下使用HTML5进行不带散列的深度链接,否则使用带散列的HTML4(如果您愿意,也可以不使用)。

History.js 作者的这篇文章也绝对值得一读。

于 2011-11-02T11:12:02.860 回答
3

不——如果你想使用 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');
});
于 2011-01-10T08:17:06.027 回答
2

锚点是唯一可以更改的部分,无需重新加载整个页面。因此,根据定义,您没有其他方法。此外,根据定义,锚不会传递给服务器,因此关闭 javascript - 这显然不起作用。

于 2011-01-10T08:12:56.273 回答