问题标签 [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 投票
0 回答
204 浏览

backbone.js - Pinterest 丰富的 Pin 图和转义片段 (#!)

我有一个backbonejs网站,它为需要共享的特定内容设置和取消设置元信息,并使用google推出的标准与phantomjs服务器(示例)合作。#!

目前我的内容正在通过 Facebook 的开放图形调试器、谷歌网站管理员 URL 测试器和 Twitter 的卡片验证器工具,但 Pinterest 似乎没有遵循与#!其他三大假发相同的标准。

这是真的吗?如果是这样的话,是否可以使用来自动态单页应用程序的内容创建 Pinterest Rich Pins?

0 投票
2 回答
185 浏览

javascript - 链接到没有哈希“#”的外部页面部分(html5 历史?)

关于在不使用哈希“#”的情况下链接到同一站点的外部页面的一部分的可能不同方法的任何建议?

如果我在一个完整的 js/ajax 场景中,我可以轻松地做到这一点,但是如果可以使用比 hashbangs 更清洁的 url 来简单滚动到部分链接,请搜索一些想法......

0 投票
3 回答
3229 浏览

angularjs - AngularJS html5Mode 在 IE 中的后备。Express 服务器需要知道路由

我将 html5Mode=true 与 AngularJS 路由一起使用。工作正常。当我使用 IE 访问该站点时,Angular 路由会退回到像http://example.com/#!/route-name这样的 Hashbang URI 。没关系。除了在 Express 中,我需要知道路线,因为它告诉我要从 Express 提供哪个 html 文件。url 的 # 部分不会发送到服务器。

我的问题是,如何让我的服务器知道在 IE 中使用 hashbang 路由请求哪个 AngularJS 路由?我正在考虑以某种方式配置 Angular 以将路由作为我可以快速读取的 http 标头发送,但我不知道该怎么做。有任何想法吗?

更新:根据我得到的反馈,让我告诉你该网站有模板。一个用于主页,一个用于所有其他页面。他们都非常不同。根据路由,服务器需要知道何时为主页提供文件,何时为其他页面提供文件。

0 投票
1 回答
829 浏览

javascript - AngularJS - 从 HTML 5 模式回退​​到主题标签

我正在开发将 html5mode 设置为 true 的 Angular 应用程序。一切都很好,它甚至有响应式模板。然而,在测试期间,我遇到了不支持 History API 的浏览器的可怕错误。想象一下我有像这样的网址

或者

使用历史 API 一切都按预期工作。但是当存在回退模式时,它会导致像这样的无限刷新循环。

就像它试图将“现代” url 重写为 hashbang 一样。

当然,遇到这个问题的不止我一个。然而,大多数解决方案包括指定

标记在头上。不幸的是,这对我不起作用。但是,如果我在基本标签 href 中提供请求的 uri,我可以获得一些工作链接。它不能完全工作,而且它是丑陋的黑客。另请注意, /en 不是 Angular 应用程序所在的目录!

提前感谢您的帮助....

0 投票
1 回答
472 浏览

email - Hotmail 无法正常阅读邮件!在网址中

我有一个单页应用程序,其 URL 类似于http://example.com/#!something/something/. 问题是,当我发送包含此类 url 链接的电子邮件时,hotmail 用户会弄错(我只在 hotmail 中注意到它,其他人都很好)。

!编码为%21使 url 错误:http://example.com/#%21something/something/

除了重写我的应用程序之外可以做什么的任何想法:-)。我正在使用swiftmailer发送电子邮件,但我非常怀疑这是否相关。

0 投票
0 回答
517 浏览

angularjs - Prerender io java 路由错误

我遇到了 prerender.io 的问题。如果我在本地主机上使用 node/express,它工作得很好,但是当我试图让它在谷歌应用程序引擎上使用 java ( https://github.com/greengerong/prerender-java/ ) 时,它会自动重新路由.

当我将其写入浏览器并按 Enter 键时, http://www.example.com/? _escaped_fragment_=/browse/761238167868/

它会自动重定向到 http://www.example.com/?_escaped_fragment_=/browse/761238167868#!/browse

在 app.js 我有以下内容:

我认为这是应用引擎服务器或中间件安装的问题,因为它与 node/express 配合得很好。

我需要重写一些东西来让应用引擎处理 hashbangs (#!) 还是什么?

这是我的 web.xml:

0 投票
1 回答
80 浏览

apache - 使用 .htaccess 重定向时出现奇怪的错误

长话短说,我正在尝试重定向:

像这样:

我正在使用以下 .htaccess 代码:

但反应很奇怪:

难道我做错了什么?我是新手。我将衷心感谢您的帮助。

更新 1

我尝试使用:

但现在它根本不起作用。当我尝试访问example.com/?_escaped_fragment_=/dfas时,它会将我重定向到example.com/?_escaped_fragment_=/dfas#!而不是example.com/serve.php?_escaped_fragment_=dfas请帮助我,伙计们,我不知道为什么会这样。这对我来说真的很重要。

0 投票
1 回答
87 浏览

javascript - 使网站小部件 SEO 兼容 - 有可能吗?

我最近被告知要向客户的站点添加一个小部件,这将允许用户与图像的不同部分进行交互,并深入了解有关他们单击的内容的更详细信息。这一切都很好,这是我以前做过很多次的事情。如果这是我控制的网站的一部分,我会知道如何使其符合 SEO。

但是,它必须托管在客户的公司网站上,并且对于我构建的任何东西必须在那里工作存在一些技术限制。值得注意的是,我们可以为我们的小部件添加一个自定义 HTML 页面作为站点的一部分,但该页面必须加载所有内容。因此,虽然我们可以上传任意数量的其他 HTML 文件,但只有这个文件会成为网站结构的一部分,包括标题、legft 导航等。

这种方法通常效果很好。我们在框架 HTML 页面中放置了一些 JavaScript,这完成了所有繁重的工作 - 根据需要通过 Ajax 加载任何额外的 HTML 页面。

但是,客户坚持要为 SEO 优化小部件的每个部分,并且可以被 Google 抓取。现在,如果这是在我可以控制的网站上,我会将小部件的每个部分创建为一个单独的 HTML 页面——具有它自己的标题、描述、URL 等——然后通过 Ajax 加载它们。

但是由于客户端只允许作为站点一部分的一个页面,因此在这种情况下这将不起作用。我显然可以使用自己的 SEO 元标记添加其他 HTML 页面 - 但如果在浏览器中查看,它们只会有小部件的内容 - 没有左侧导航、标题等。

那么这里的解决方案是什么?搜索引擎优化显然会中断,因为谷歌(或其他搜索引擎)会将 URL 返回到这些独立页面,这完全破坏了网站体验。

我认为没有任何方法可以做到这一点,除非客户允许我们在他们的网站上为类似页面创建每一个喜欢的页面,我的想法是对的吗?

0 投票
0 回答
188 浏览

php - AJAX - Google Crawling 和“Fetch as Google”

我有一个关于 Google 抓取和 AJAX 的问题。

这是我的网址的样子:

我知道谷歌和其他搜索引擎使用?_escaped_fragment_=替换哈希标签来获取某个页面。

当我尝试:

它把我带到索引页面而不是联系。

我使用了我通常加载 ajax 数据的一小段 PHP,现在“Fetch as Google”获取内容。

这个可以用吗?如果爬行(使用_escaped_fragment_)包含这个页面和php,否则它是一个客户端并通过ajax获取他的页面?

谢谢

0 投票
1 回答
154 浏览

ajax - Pushstate 在缓存方面是否不如 Hashbangs?

与 hasbangs 相比,HTML5 Pushstate 有几个优点,事实上,Google 现在鼓励使用 Pushstate。公开讨论的唯一 Pushstate 缺点是非现代浏览器不支持它。然而,对我来说,Pushstate 在缓存方面似乎也是不利的。我可能是错的,因此这个问题。

在缓存页面方面,Pushstate 是否不如 Hashbangs?

这是一个看起来 Pushstate 不擅长缓存的案例。

推萨特

  • Bob 导航到eg.com/page1,整个页面被下载、渲染和缓存。

  • Bob 点击一个按钮,eg.com/json/page2下载并缓存。

  • 浏览器处理 JSON 并重新呈现 Bob 页面的部分内容。

  • Pushstate 将显示的浏览器地址更改为eg.com/page2.

  • Bob 关闭浏览器,然后重新打开并直接访问 eg.com/pushstate2. 整个页面被下载、渲染和缓存。*

*-尽管理论上它已经在缓存中以eg.com/json/page2

哈希帮

  • Alice 导航到eg.com/#!page1eg.com/index.html被下载并缓存。

  • eg.com/json/page1被下载并缓存。

  • 浏览器处理 JSON 并呈现 Alice 的页面。

  • Alice点击一个按钮,eg.com/json/page2被下载并缓存,显示的浏览器地址变为eg.com/#!page2

  • 浏览器处理 JSON 并呈现 Alice 的页面。

  • Alice 关闭浏览器,然后重新打开,直接访问eg.com/#!page2。与 Pushstate 不同,没有下载任何内容,并且从缓存中加载所有内容。

概括

我有很多类似的案例,问题是这是否确实有效,我可能遗漏了一些导致我得出错误结论的东西。在缓存页面方面,Pushstate 是否不如 Hashbangs?