【问题标题】:url changing without hash-bangs and fragmentsurl 改变,没有 hash-bangs 和 Fragments
【发布时间】:2011-12-30 19:53:38
【问题描述】:

在线阅读有关 hash-bangs 的信息后。我决定坚持我们当前的 url 结构。我一直在开发一个网站并使其完全非 JavaScript。我来到了一个阶段,我可以开始将一些东西升级为花哨的 javascript 和 ajaxy 东西。

提供一些信息。基本上,当用户访问该站点时,主页是主要区域。它有一些统计数据和一个框。在此框中是带有一些号召性用语按钮(转到地图、联系方式等)的公司详细信息。

搜索公司时,或直接链接到您去的公司时

http://mysite.com/company/公司名称

然后这个url被apache重写为

http://mysite.com/index.php?company=公司名称

然后我的 php 脚本在哪里加载带有公司详细信息等的盒子

现在我来做一些 ajaxy 的东西。我希望用户能够点击我网站上的公司链接并使用搜索,而无需重新加载页面。因此,如果他们点击查看次数最多的公司的名称,框中会出现一个快速加载符号,然后公司详细信息会被加载到该区域。

这又不是什么大问题。我可以通过多种方式做到这一点,类名绑定或 url 正则表达式绑定与锚点上的点击处理程序。

但是,这是我的问题。我需要能够更改 URL,以便它始终反映公司名称。用户通过复制和粘贴 url 来共享链接。即使我提供了“单击以复制到剪贴板”的固定链接按钮,他们也几乎不会使用它。 Ebay 是一个典型的例子,他们提供了很好的分享 url,但是在这个地方的论坛上看到很长的链接是很常见的。

Hashbangs 或其他碎片化的 url 方法可以让我这样做。我还可以将 javascript 处理程序附加到 document.load,这样当用户从零碎的 url 访问该站点时,我可以填充该框。但是,如果非 JavaScript 用户使用零碎的 url 访问该网站,他们只会获得主页,并且必须手动搜索公司。

考虑到我一开始就投入了时间和精力来做所有非 js 的事情。我现在不想破坏它,也不想决定是否抛弃非 js 用户。然而,ajax 加载的内容非常重要,共享 url 也是如此。

理想的解决方案要么是 php 读取碎片化 url 的方式,要么是 javascript 改变 url 路径的方式

有人可以帮忙吗?

P.S:为这篇文章道歉。只是想提供尽可能多的信息并分享我从研究中发现的东西,以节省时间来复习我可能已经看过的东西

【问题讨论】:

标签: php javascript jquery ajax url-rewriting


【解决方案1】:

看看我在不使用主题标签的情况下构建的 AJAX 系统。它在现代浏览器中使用 window.history 并回退到不支持酷 AJAX 内容的旧浏览器。

http://xeoncross.github.com/MicroStream/

你可以在我的网站上看到它:http://xeoncross.com

不到 10kB 的简单、注释良好的代码,所以你应该能够毫无问题地掌握它。

【讨论】:

  • 谢谢,我听说过历史 API。从来不知道你可以像那样更改 thr url。然而,这并不能满足我的需求。如果不支持历史 API,您的 ajax 将无法工作。但是 IE9(和
  • 实际上@Lee,无论您如何处理方案的其余部分,您都可以实现这一点。它降级为
  • 我知道我的 IE 会很好地降级到正常的浏览器加载。然而那不是我想要的。 IE 支持 ajax,但不支持历史 API。您的代码在修改 URL 时似乎需要使用 ajax 的历史 API。如果不是历史 API 要求保持 URL 正确,那将非常适合我的需求。然而,我认为基于研究,我可以在 Firefox 和 chrome 中使用您的方法,并在 IE 中使用片段。这种方式虽然并不完美,但只有 IE 用户从 URL 栏中为非 js 用户发布链接才会导致问题。
  • 这是我可以忍受的。通过允许 FF 和 chrome 用户使用您的代码发布 url,它大大降低了它发生的机会。它迫使它进入发布链接的用户必须使用 IE(或旧浏览器)并且单击该链接的人必须禁用 javascript 的情况。我想这将是一个非常小的百分比。感谢您的回复,希望通过结合不同的方法,我已尽我所能消除问题
  • 请把一些相关代码直接放入你的答案中。
猜你喜欢
  • 2016-04-03
  • 2018-12-10
  • 2012-04-05
  • 1970-01-01
  • 2022-06-14
  • 2016-08-18
  • 2012-03-09
  • 2016-12-23
  • 2019-12-26
相关资源
最近更新 更多