【问题标题】:Is Ajax Deep Linking possible without prepending hashes ('#') in links是否可以在链接中不添加哈希 ('#') 的情况下进行 Ajax 深度链接
【发布时间】:2011-06-06 09:26:48
【问题描述】:

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

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

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

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

提前致谢!

【问题讨论】:

  • 您确定您正确理解了深度链接术语吗? en.wikipedia.org/wiki/Deep_linking
  • 顺便说一句,如果您想在不重新加载整个页面的情况下动态更改内容 - 锚部分是您唯一可以更改的部分。
  • 感谢您的链接,我有一段时间感到困惑,因为图书馆使用了该术语。不过,我不知道该使用什么术语,所以我只是将其编辑为“Ajax Deep Linking”,您还有其他建议吗?
  • 不。但正如我所说 - 锚是唯一可以在不重新加载整个页面的情况下更改的部分。因此,根据定义,您没有其他方法。此外,根据定义,锚不会传递给服务器,因此关闭 javascript - 这显然不起作用。
  • 你不妨把它作为一个答案,而我很遗憾没有哈希就无法做到这一点......该死......

标签: javascript jquery fragment-identifier deep-linking jquery-address


【解决方案1】:

这应该可以使用 HTML5 来实现。我最近搜索了有关此主题的信息,发现 this very interesting library History.js

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

This article by the History.js author也绝对值得一读。

【讨论】:

    【解决方案2】:

    不 - 如果您想使用 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');
    });
    

    【讨论】:

    • 是的,现在我正在使用 jquery bbq 插件。好吧,实际上我只是将其插入现有网站 XD
    • :) 祝你好运!我个人最喜欢的是 Asual 地址插件 (asual.com/jquery/address/docs)
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      相关资源
      最近更新 更多