问题标签 [hashbang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2869 浏览

javascript - Hashbang 与 URI 解析

我希望将我的网站移动到完整的异步文档加载中,但我不想使用#!请求处理的方法,因为 1)我不想破坏链接,以及 2)我想要一种更灵活的处理方式站点获取的 URI。

我已经能够为我的网站构建一个轻量级 MVC,它允许使用通用样式的 url(例如:http ://ddrewdesign.com/blog/jquery-is-or-is-child-of-function )来制作正确的请求。

我的问题是:这很容易做到。我错过了什么?#!当这种方法从用户体验的角度来看似乎更有意义时,为什么 Gawker 和 Google 会选择?

编辑

为了澄清起见,最初,我的网站仅使用查询字符串方法(no mod_rewrite)来检索请求。这些链接遍布整个网络,我不能让它们中断。我的理解是,如果我开始使用 hashbang 方法,他们会这样做。再说一遍:这可能是我困惑的一部分,所以我并不是说我已经解释了一切。我在问我错过了什么,因为到目前为止我读过的任何内容都没有让我看起来可以容纳那个查询字符串。

0 投票
2 回答
1483 浏览

javascript - 仅在 jQuery Mobile 中抑制某些链接的 AJAX/哈希行为

我为此找到了一些旧答案,但它们似乎不再适用于 jQuery Mobile。

我只想禁用某些链接的 AJAX/hashbang 行为。我发现我可以全局禁用它:

...但我只想为某些类禁用它,这样我的自定义 click() 处理程序就不会搞砸了。看起来 click() 中的 return true 或 e.preventDefault() 这次没有帮助。

0 投票
3 回答
6038 浏览

jquery - 用于 hashbang 导航的 jQuery Mobile 和“查询参数”

我正在使用 jQuery Mobile,并且在一个 HTML 页面中只有几页。打开这些页面时,我想为它们传递参数,以便它们的参数在 URL 中保持不变。

例如

它会打开,我可以在 beforeshow 事件中访问参数 X 和 Y。

这可能吗?如何?您建议使用 hashbang 对参数进行编码的替代方法是什么?

0 投票
1 回答
403 浏览

jquery - URL 中的 jQuery Mobile 数据

使用 jQuery Mobile,我如何创建 hashbang URL,例如,#!/value_1/value_2并且能够读取这两个值,假设两个参数将始终处于相同的顺序。

需要注意的是,这是由单页结构驱动的,所以我没有链接到外部页面。

0 投票
3 回答
6643 浏览

jquery - 要散列还是不散列?

我正在开发一个新网站,我想尽可能多地使用 AJAX。基本上,我希望用户几乎永远不会离开主页,并在弹出窗口、滑块、部分等中显示所有内容。

现在我们现有的网站已经排名很高,所以我也想让谷歌高兴。我一直在阅读 Google 的Making AJAX Applications Crawlable并了解我必须通过_escaped_fragment_为爬​​虫提供相同的内容。


我想使用Umbraco开发这个网站的问题,它已经提供了对 SEO 友好的 URL。IE

但问题是我没有一种简单的方法来实现_escaped_fragment_而不破解 Umbraco 核心(至少这是我的知识),并且使用我在下面发布的解决方案(答案)也将使没有 Javascript 的用户满意。双赢局面?你告诉我!=)

更新
昨天有另一个用户的回答(现已删除),他建议 Google 不再使用_escaped_fragment_方法,并建议将其排除在外。这是真的?Google 真的会运行 AJAX 来查看内容吗?

谢谢马尔科
_

0 投票
1 回答
11982 浏览

javascript - Backbone.js URL 路由

在backbone.js 上设置路由时,框架似乎会自动为其添加#。IE

将匹配 www.example.com/#example/123 的链接

是否可以稍后在网址中添加主题标签?我实际上是在尝试将我的应用程序构建为 www.example.com/text/#example/123(注意 # 之前的 text/)。

有没有在不改变backbone.js框架本身的情况下做到这一点?

0 投票
1 回答
1132 浏览

javascript - HTTPS 页面上带有 Backbone.js 的购物车问题?

只是想知道使用 Backbone.js 构建购物车是否存在任何问题,更具体地说,是否存在通过 HTTPS 使用 hash-bangs 的任何安全问题?

另外我想我可以通过 AJAX 发布信用卡详细信息,对吗?

干杯,

0 投票
0 回答
491 浏览

javascript - 使用 #! 时避免额外的页面加载!AJAX 导航

我正在编写一个基本上是一系列连续页面的网站。非限定 URL 指向最后一页,限定 URL 指向特定页面。所以我们有:

我有以下要求:

  • 我希望页面由 AJAX 动态加载。用户可能会在短时间内顺序浏览许多连续页面,我想避免重新加载和重绘(并添加某种 JavaScript 预取相邻页面以加快导航速度)
  • 我希望这些页面可以添加书签
  • 我希望页面可抓取
  • 我希望它适用于大多数用户。

所以,我想出了以下方案:

  • 存档页面的标准规范 URL 是http://example.com/3。通过此 URL 访问的页面是完全可读的,无论是否安装了 JavaScript。如果 JavaScript 不可用,则指向其他页面的链接是正常链接,并且一切都以老式的方式运行。这也适用于爬虫。
  • 如果可以使用 JavaScript 和历史操作(pushState 和 replaceState)的浏览器访问此类 URL,则在访问其他页面的链接时,内容会使用 AJAX 动态更新。然后浏览器历史记录由 JavaScript 更新。
  • 如果 JavaScript 可用但历史操作不可用的浏览器访问该站点,则在访问 http://example.com/3 时使用JavaScript 将用户重定向到http://example.com/#!3 . 访问主页http://example.com时不会发生重定向。然后使用散列更改事件完成导航。
  • 如果爬虫试图通过外部链接访问http://example.com/#!3,它实际上会请求http://example.com/?_escaped_fragment_=3 ( 1 )。对于此类 URL,网络服务器将发出永久重定向到http://example.com/3,然后将被正确抓取。

在这里一切看起来都很好,但是,让我们看看所有可能的情况:


1.没有JavaScript浏览器

1.1。没有 JavaScript 浏览器访问根 URL

按预期工作。

1.2. 没有 JavaScript 浏览器访问规范 URL

按预期工作。

1.3. 没有 JavaScript 浏览器访问 shebang URL

http://example.com/#!3

默默失败!用户得到最后一页而不是第 3 页。

2. 爬虫

2.1。爬虫访问根 URL

按预期工作。

2.2. 爬虫访问规范 URL

按预期工作。

2.3. 爬虫访问shebang URL

http://example.com/#!3

爬虫实际上请求http://example.com/?_escaped_fragment_=3,并被重定向到规范 URL。这是对 Web 服务器的一个额外请求,但这没什么大不了的(不会从数据库中获取额外的页面并返回给用户)。

3.旧浏览器

3.1。旧浏览器访问根 URL

其他页面的链接被它们的 shebang 版本所取代。然后通过 AJAX 顺利完成导航。

3.2. 旧浏览器访问规范 URL

用户被重定向到 shebang URL。问题:服务器实际上会获取并服务页面 3 次!

  1. http://example.com/3 <- 完全由服务器提供服务
  2. JavaScript 发出重定向到http://example.com/#!3
  3. 服务器只看到http://example.com/,并提供最后一页
  4. JSON 用于(再次)获取第 3 页并替换页面上的内容。

3.3. 老浏览器访问shebang URL

不需要重定向,但最后一页有额外的负载!

  1. 用户访问http://example.com/#!3
  2. 服务器只看到http://example.com/,并提供最后一页
  3. JSON 用于获取页面 3 并替换页面上的内容。

4.现代浏览器

4.1。现代浏览器访问根 URL

4.2. 现代浏览器访问规范 URL

这两种情况都没有问题。导航由 AJAX 完成,规范的 URL 被推送到历史记录。

4.3. 现代浏览器访问shebang URL

URL 被修改为规范 URL。内容由 AJAX 加载。和以前一样,问题是这会导致服务器对最后一页产生额外的负载。


所以,总结一下:

  • 该解决方案基本上可以工作
  • 但是当使用 shebang URL 时,在大多数情况下,它会导致最后一页的不必要加载,因为服务器永远不会知道它是否需要服务器最后一页,或者这是否实际上是 shebang 请求的一部分。

我的问题是:有人知道如何避免这些额外的页面加载吗?有什么好的做法可以解决这样的问题吗?

0 投票
2 回答
384 浏览

javascript - 如何实现#!基于链接?

#我一直想知道如何使用 URL或#!在 URL中即时浏览页面。许多像谷歌这样的网站都在http://www.google.com/nexus/上使用它,当用户点击任何链接时,没有任何变化并且事情会立即打开,只有 URL 发生变化,例如:www.example.com/#contactwww.example.com/#home

我怎样才能用我的 8 个页面做到这一点?(主页、功能、价格、联系方式、支持)

0 投票
1 回答
2577 浏览

ajax - 什么是shebang/hashbang?

除了使 AJAX 内容可被 Google 抓取之外,shebangs/hashbangs 还有其他用途吗?或者就是这样?