📜  通过 jquery 更改 url 而无需刷新页面 - Java (1)

📅  最后修改于: 2023-12-03 15:12:22.734000             🧑  作者: Mango

通过 jQuery 更改 Url 而无需刷新页面 - Java

在 Web 应用程序中,经常需要根据用户请求动态更改 URL,以便搜索引擎更好地收录。jQuery 提供了一种简单的方式来更改 URL,而无需刷新页面。

实现步骤
  1. 首先,引入 jQuery 库文件。

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    
  2. 监听需要更改 Url 的元素事件,例如链接的点击事件。

    $('a.link').click(function(e) {
      e.preventDefault(); // 阻止链接默认事件
      var href = $(this).attr('href'); // 获取链接的地址
      window.history.pushState(null, null, href); // 更改 Url
      // 执行其他操作(例如 ajax 加载内容)
    });
    

    上述代码使用了 jQuery 的 click() 方法来监听链接的点击事件,并使用 preventDefault() 方法阻止浏览器对链接的默认行为。然后,获取链接的地址,并使用 pushState() 方法来更改 URL。最后,执行其他操作(例如 ajax 加载内容)。

  3. 监听浏览器的前进/后退事件,以便支持历史纪录导航。

    $(window).on('popstate', function(e) {
      // 执行对应的操作(例如 ajax 加载内容)
    });
    

    上述代码使用了 jQuery 的 on() 方法来监听浏览器的 popstate 事件。在浏览器前进/后退时将执行对应的操作。例如 ajax 加载内容。

  4. 最后,需要注意以下事项:

    • 在使用 pushState() 方法更改 Url 时,需要将 URL 路径与当前页面的路径相同。否则,在刷新页面时将无法找到相应的页面。
    • 在监听前进/后退事件时,需要手动触发一次 popstate 事件。可以在页面加载时执行一次。
完整示例

完整的示例代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>通过 jQuery 更改 Url 而无需刷新页面 - Java</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  </head>
  <body>
    <a href="/link1" class="link">Link 1</a>
    <a href="/link2" class="link">Link 2</a>
    <div id="content"></div>
    <script>
      $(function() {
        // 监听链接点击事件
        $('a.link').click(function(e) {
          e.preventDefault();
          var href = $(this).attr('href');
          window.history.pushState(null, null, href);
          loadContent(href); // 加载内容
        });

        // 监听浏览器前进/后退事件
        $(window).on('popstate', function(e) {
          var href = location.pathname;
          loadContent(href); // 加载内容
        });

        // 手动触发一次浏览器前进/后退事件
        $(window).trigger('popstate');
      });

      function loadContent(href) {
        // 加载内容(例如 ajax 加载)
        $('#content').load(href);
      }
    </script>
  </body>
</html>
参考链接
  1. jQuery 官方文档
  2. MDN Web Docs