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

ajax - 如何使用 hashbang url 处理 Facebook 分享/点赞?

我正在构建一个网站,我将从主页打开网站上的一些其他 URI 到灯箱(AJAX)中,我想使用 HTML5 推送状态和哈希爆炸作为后备来管理状态的变化。

现在我希望这些网址可以抓取并且 Facebook 可以分享/喜欢..

如果用户浏览器支持 HTML5 推送状态,没问题,他可以分享 URL(例如 : http://myserver/example),Facebook 会在静态内容中找到合适的 OG 元数据。

但是如果用户使用 HTML4 浏览器,他将有一个类似http://myserver/#!/example. 无论如何我希望他能够通过Facebook分享它......

现在看起来 Facebook 支持 _escaped_fragment_ 替换方法,所以我只是将请求从http://myserver/?_escaped_fragment_=/example to重定向http://myserver/example ,每个人都应该很高兴......</p>

所以我在我的 htaccess 中添加了一个重写条件:

我的问题是我不能让它与 Facebook 一起工作,使用 Facebook linter 它似乎总是在 hashbang 之后的 URL 部分一直进行百分比转义,导致 url 像 http://myserver/%2Fexamplewhich 降落到 404 :-(

有人知道如何欺骗 Facebook 不转义这部分 URL 吗?我可以在 apache mod_rewrite 方面做点什么吗?

我也对任何其他有效的 ajax 可抓取/可取的 URL 策略持开放态度;)

0 投票
1 回答
424 浏览

php - 带有转义片段 URL 的 jQuery 动画(hash-bang,#!)

我的网站设置如下:当页面加载时,会播放一个 jQuery 动画——在模板中——完成后,它会进一步调用 Ajax 来获取页面的内容。现在,我想部署像http://com-address/#!page这样的 hashbang ,我还需要在页面加载时保留动画。但我认为这个设置的问题是;当网络爬虫访问页面时,它不会等待动画完成并进行 Ajax 调用。它需要加载内容的页面状态(在我的情况下是在动画完成后获取的)。

鉴于上述情况,哪种方式更好:

  1. 更改整个流程并抢先加载页面内容并将其隐藏直到播放动画。

  2. 仅当在 URL 中找到 hash-bang 或 _escaped_fragment 时:

    一种。按照步骤 1。

    湾。加载没有动画内容的页面。

  3. 我对网络爬虫的假设是不正确的,让当前流动。

有什么建议吗?

编辑

@kdzwinel,感谢您提供有关文本浏览器的提示!

再想一想,我会选择选项 2(a),因为当爬虫访问带有碎片 URL 的资源时,它应该在页面上获得完整的结果内容。如果用户直接导航到碎片化的 URL,用户对动画的体验也会保持不变(通过在页面加载和动画开始之间删除动态内容片段上的内容)。

同样对于所有其他场景,我们将继续旧流程(动画然后通过 Ajax 获取),因为我们不想刷新页面,因为用户已经在访问网站并尝试使用带有碎片 URL 的锚进行平滑/无缝导航(绑定他们的点击事件开始动画)。

0 投票
1 回答
672 浏览

javascript - 简单的 ajaxify,没有 hash 或 hashbang url

我正在学习网页设计课程。我和很多其他学生都对 ajaxifying 我们的工作很感兴趣。我们的老师只对设计和 HTML 感兴趣——所以他帮不上忙。

我希望我使用正确的术语 - 否则请纠正我。通过ajaxifying,我的意思是让我的网页在导航时只更新某些部分。

例如,假设我有一个包含 3 个子页面的网页:

1:索引.html

2:项目.html

3:联系人.html

使用链接时:

  • 只有 Content-div 应该重新加载。

  • 菜单应该更新哪个菜单点是活动的(这里用粗体标签显示)。如果这太复杂了,可以重新加载菜单。

  • 根本不应该重新加载页脚。

  • 标题应该更新。

  • 网址应该更新。

  • 我真的希望网址干净。也就是说:不是/#projects.html/#/projects.html,而是直接/projects.html/projects

  • 工作书签和后退按钮至关重要。

这可能吗?我将永远疯狂地感谢任何在这里帮助我的人!:-D 我已经尝试过(并使用过)jQuery 地址和历史插件、History.js和它的“要点”。无法让它工作。我已经拖网和拖网堆栈溢出和谷歌,但似乎找不到任何人解释这些事情或有一个简单的解决方案。

针对现代网络浏览器的解决方案会很好。如果 IE 和没有 javascripts 的人只得到简单的 html 版本,那会很酷 - 但这不是绝对必要的。

请帮助 - 任何帮助将非常非常感激!谢谢!:-)

0 投票
1 回答
993 浏览

javascript - 我不应该使用backbone.js,因为它使用hashbangs吗?

我是backbone.js 的新手,喜欢构建javascript 的想法。但是,我读过它依赖于 Twitter 试图根除的 hashbangs。

所以我的问题是我不应该因此使用backbone.js吗?

0 投票
0 回答
543 浏览

ajax - 了解 Googlebots AJAX 抓取

我浏览过 Google 的文档和无数关于这个主题的博客文章,根据日期和来源,似乎有一些相互矛盾的信息。请把你的智慧照耀在这个卑微的农民身上,一切都会好起来的。

我正在免费建立一个网站,其中很大一部分观众来自互联网连接较差的非洲国家,而客户负担不起任何体面的基础设施。因此,我决定将所有内容都作为静态 html 文件提供服务,如果 javascript 可用,我会在用户单击导航链接时将页面内容直接加载到 DOM 中,以防止加载整个页面的开销。

我的客户端路由如下所示:

//domain.tld/#!/page

我的第一个问题是;googlebot 是否将其翻译为:

//domain.tld/_escaped_fragment_/page还是//domain.tld/?_escaped_fragment_=/page

我在 php 中制作了一个简单的服务器端路由器,它为 googlebot 构建请求的页面,我的计划是重定向//d.tld/_escaped_fragment_/page//d.tld/router/page.

但是当使用 Google 的“Fetch as Googlebot”(我可能是第一次添加)时,它似乎无法识别页面上的任何链接。它只是返回“成功”并向我显示主页的 html(更新:当将 Fetch as Googlebot 指向//d.tld/#!/page它时,它只返回主页的内容,而不做任何 _escaped_fragment_ 魔术)。这引出了我的第二个问题:

使用 hashbang 链接时,我是否需要遵循特定的语法,以便 googlebot 抓取它们?

我的链接在 HTML 中如下所示:


Update1:​​因此,当我要求 Fetch as Googlebot 将//d.tld/#!/page其显示在访问日志中时:"GET /_escaped_fragment_/page HTTP/1.1" 301 502 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"但它似乎不遵循我设置的 301,而是显示主页。我应该改用302吗?这是我正在使用的规则:RedirectMatch 301 /_escaped_fragment_/(.*) /router/$1


Update2:我改变了我的计划,并将 googlebot 作为我非 JavaScript 后备策略的一部分。所以现在所有的链接都指向路由器/router/page,然后/#!/page/用javascript更改为onLoad。我会暂时保留这个问题,以防有人有一个可以帮助其他人的绝妙解决方案。

0 投票
1 回答
117 浏览

hashbang - 对于某些网站 URL 中使用的内容和与 /#!/ 相关的技术

可能重复:
Facebook 和新 Twitter URL 中的 shebang/hashbang (#!) 是什么?

我很好奇/#!/在 Twitter 或 about.me 等网站中使用的表达方式。

一些例子: http: //twitter.com/# !/search/programmer http://about.me/search/#!/tag/programmer

我想知道是否有特定的技术可以使用它,比如框架或编程语言。

0 投票
2 回答
37904 浏览

javascript - 做 Twitter、Hash-Bang # 之类的链接!网址的

可能重复:
Facebook 和新 Twitter URL 中的 shebang/hashbang (#!) 是什么?

我想知道 Twitter 是如何工作的。

如果您查看源代码,您使用的链接类似于 /#!/i/connect 或 /#!/i/discover,但它们没有附加 JavaScript 函数,如 load('connect')或其他东西,并且它不需要重新加载页面。它只是改变了页面内容。

我看到了这个页面,但是所有这些文件都必须存在,你不能直接进入其中一个。我想在 Twitter 上,这些文件中的每一个都不存在,而是以其他方法处理的。不过,如果我错了,请纠正我。

有没有办法可以复制这种效果?如果是这样,是否有关于如何执行此操作的教程?

0 投票
1 回答
568 浏览

javascript - 使用 #! 使哈希可抓取!并在变化中幸存下来

我正在尝试通过将 # 更改为 #! 来使我的网站可抓取。单击链接时该页面工作正常,但我无法修复直接从 URL 调用哈希的脚本。

这就是我所拥有的

身体

当我点击 foo 时,内容加载正常,但如果我用 www.foo.com/#!foo 调用我的网站,它不会加载内容。

谁能指导我?

0 投票
1 回答
331 浏览

url - 如果尚未存在,则将 hashbang 添加到 URL

问题

我已经使用 #! 启动并运行了我的网站!URL 和 PathJS 运行良好。当某人链接到已经包含包含 hashbang 的正确 URL 结构的 URL 时,它可以正常工作。

我遇到的唯一问题是当用户访问 URL 中没有 hashbang 的页面时,它需要附加 hashbang 然后重新加载页面,或者希望触发 PathJS 来检测正确的 URL 结构并按照我说的做它到。

例子

访问http://twitter.com/google将拦截该 URL,将其更改为http://twitter.com/#!/google然后加载适当的内容。

0 投票
1 回答
2305 浏览

ajax - 可抓取的 Ajax 内容。没有 hashbang 的 SEO。我的方法好吗?

我将基于 ajax 构建我的应用程序,我的 URL 类似于:

在参考了一些关于 google 建议的讨论后:hashbang (#!),我不难意识到这不是最好的解决方案。有几个原因:

  • 无论如何,URL 非常难看。
  • 如果有一天谷歌(或其他一些搜索引擎)提出了一个比 hashbang 更好的解决方案,那就太糟糕了。我必须用 hashbang 保留我丑陋的 url,或者编写一些 js 代码来使指向我的页面的链接仍然有效。
  • HTML5 pushState 总有一天会流行起来。

对于上述所有事情,我决定按照自己的方式进行:我的导航链接将是这样的:

一些 jQuery 代码将使其能够加载 ajax 内容,而不是像普通链接那样进行页面更改:

当爬虫读取我的页面时,它会跟随“href”属性中的url,我会提供我页面的静态非js版本供google阅读。几天后,我的页面被编入索引,用户将在 Google 的搜索结果中看到我的页面,如下所示:

我将再次使用用户 js 将用户重定向到我的正常 ajax 版本,我的意思是,到真正的 URL:

这是我目前能想到的最好的方法。请给我建议:我应该这样做,还是可以做得更好?谢谢大家!