Javascript Ajax url导航

Javascript Ajax url导航,javascript,jquery,Javascript,Jquery,我正在尝试制作类似于GitHub的东西,它基于url加载内容 我看到了这个,但我不想使用插件。我想手动编写代码 在我看到的一篇文章中,他们一直在检查document.location.hash是否有任何更改,然后加载内容。有没有更好的方法来实现这一点 以下是我的想法: 在页面加载时加载内容 在url更改时加载内容 在不重新加载页面的情况下更改锚标记的url 搜索引擎优化 后退按钮 如果你想和SEO有一些相似之处,你仍然需要真正的链接,然后用一些利用这种链接的javascript来替换点击事件。然

我正在尝试制作类似于GitHub的东西,它基于url加载内容

我看到了这个,但我不想使用插件。我想手动编写代码

在我看到的一篇文章中,他们一直在检查document.location.hash是否有任何更改,然后加载内容。有没有更好的方法来实现这一点

以下是我的想法:

  • 在页面加载时加载内容
  • 在url更改时加载内容
  • 在不重新加载页面的情况下更改锚标记的url
  • 搜索引擎优化
  • 后退按钮

  • 如果你想和SEO有一些相似之处,你仍然需要真正的链接,然后用一些利用这种链接的javascript来替换点击事件。然后您只需设置事件,使其通过AJAX加载历史触发器

    我链接的History.js脚本使用了新浏览器中引入的新历史api,但如果不受支持,它将回退


    在页面重新加载/第一页加载时,您可能希望服务器提供第一个内容-因此Google有一些实际内容需要缓存。

    如果您希望与SEO有一些相似之处,您仍然需要真正的链接,然后用一些利用此功能的javascript替换单击事件。然后您只需设置事件,使其通过AJAX加载历史触发器

    我链接的History.js脚本使用了新浏览器中引入的新历史api,但如果不受支持,它将回退

    在页面重新加载/第一页加载时,您可能希望服务器提供第一个内容-因此Google可以缓存一些实际内容。

    一些浏览器支持事件和
    窗口。onhashchange
    事件处理程序:

    hashchange事件在窗口的哈希更改时触发(请参阅location.hash)

    但有些浏览器没有,计时器黑客用于没有
    hashchange
    事件的浏览器

    你最好的办法是抓住一个现有的插件或库,找出它是如何工作的,这将有助于你克服各种浏览器攻击和特殊情况:

    某些浏览器支持事件和
    窗口。onhashchange
    事件处理程序:

    hashchange事件在窗口的哈希更改时触发(请参阅location.hash)

    但有些浏览器没有,计时器黑客用于没有
    hashchange
    事件的浏览器

    你最好的办法是抓住一个现有的插件或库,找出它是如何工作的,这将有助于你克服各种浏览器攻击和特殊情况:

    我在一个“codeigniter”类似的问题上发现了这一点,但应该回答您的问题

    这是一个非常简单的解决方案:

    请在此处查看演示:

    希望它能有所帮助

    我在一个“codeigniter”类似的问题上发现了这一点,但应该能回答您的问题

    这是一个非常简单的解决方案:

    请在此处查看演示:


    希望它能有所帮助

    我猜您想知道当您使用后退按钮时,它会在您使用的ajax页面导航中正确地后退吗?您看过jQuery.History了吗?它确实使用了通过x-browser方法监视散列更改的功能,根据我的经验,它工作得很好。我猜您希望在使用后退按钮时,它能够正确地通过您使用的ajax页面导航后退?您看过jQuery.History吗?它确实使用了通过x-browser方法监控散列更改的功能,根据我的经验,它工作得很好。我如何处理真正的链接?例如,我得到如下控件:
    /MyController/GetProfileInfo
    。但是如果我转到那个url,它不会呈现母版页或任何样式,等等。@Lol coder你应该设置你的代码,这样当它通过AJAX时,你不会呈现母版页,但当它不是通过AJAX时,它会呈现它。方法包括检查标题,但是你可以通过POST发送一个额外的值,让服务器知道它的Ajax,这样你就可以做一个既便宜又肮脏的把戏了。我该如何处理真正的链接呢?例如,我得到如下控件:
    /MyController/GetProfileInfo
    。但是如果我转到那个url,它不会呈现母版页或任何样式,等等。@Lol coder你应该设置你的代码,这样当它通过AJAX时,你不会呈现母版页,但当它不是通过AJAX时,它会呈现它。方法包括检查标题,但您可以通过POST发送额外的值,以便服务器始终了解其ajax,这是一个廉价而肮脏的把戏