我需要一个jQuery.history解决方法来刷新

时间:2011-01-14 14:43:26

标签: jquery jquery-plugins

我在网页中使用jQuery.history插件,我遇到了一个小问题。我的网页有以下布局:

  • www.myDomain.com
  • www.myDomain.com/#home.php
  • www.myDomain.com/#otherPage.php
  • ...更多

因此,当我在www.myDomain.com访问我的网站时,它实际上会加载index.php,这非常符合逻辑。在index.php内,我说:include('home.php');。所以谷歌可以检查我的第一页的内容。 $.historywww.myDomain.com链接存储在其插件中。哪个还好。

  1. 现在,我浏览我的菜单并点击 Home 。哪个会指引我到我的主页。但当然,我已经在那里了。问题是我的 Home 按钮的链接是#home.php,因为我使用$.history执行了ajax请求。所以我的网页逐渐消失,相同的内容即将出现。

  2. 当我在 otherPage 并按ctrl+R时,我首先获取我的主页,然后卸载网页, otherPage 进入。很烦人,因为我想直接 otherPage

  3. 所以我的问题是:我怎样才能确保在没有哈希的情况下直接加载第一页(没有哈希)?如何确保未加载homePage我将转到另一个哈希?

    它出错是合乎逻辑的,但我没有看到解决方法,因为PHP无法获取链接的哈希值。这仅适用于用户代理。我正在考虑设置一个额外的变量或什么东西去我的页面,但仍然,这将使href不再相同,$.history将无法识别相同的链接。

    更新

    这个演示实际上显示了我在说什么:

    http://balupton.com/sandbox/jquery-ajaxy/demo/

    当您在页面上并向下滚动到TABS部分时。 Using jQuery Ajaxy作为标题;它显示一个空白部分。然后单击选项卡将填充它。刷新页面时,它将再次从空白页面开始,然后使用您想要的正确内容填充它。我的事情是:我不想要一个空白的起始页面。

    提前致谢!

2 个答案:

答案 0 :(得分:0)

我建议使用#home.php而不是#home,这样它就不会一个一个地加载两个页面而只会加载一个页面。

参考:http://plugins.jquery.com/project/jquery-history-web-2-0-hashchange-history-remote

答案 1 :(得分:0)

好的,所以我最终创建了一个解决方法。

在我的主页中,我执行标准include()。并且不要将其设置为display: none。但我稍后会在javascript中执行以下操作:document.write('<style>#content{display:none;}</style>');

所以现在,谷歌将找到正常的页面。当有人加载页面时。第一个包含的页面被忽略了。因为我们初始化了$.history object,所以在第一次ajax调用之后页面会执行$('#content').show();

PS。我想提一下,我应该从jquery.address plugin开始,而不是这个。也许有一天我会重构它。