是否有任何 javascript 库可用于处理 hashbang/shebang (#!) url?

发布于 2024-10-17 21:06:27 字数 224 浏览 4 评论 0原文

鉴于 Twitter 和 Gawker 使用 hashbang url 的负面新闻,我很难找到任何示例/库来了解如何实际使用它们。

我想在我们网站上的 javascript 轮播中使用 hashbang url,以便我们可以直接链接到轮播的特定页面。

是否有任何好的跨浏览器库或示例(最好是非 jQuery,因为我们使用 Prototype)用于将新 url 推送到页面位置并在页面加载时解析 url?

With all the negative press over Twitter and Gawker's use of hashbang urls I'm having a very hard time finding any examples/libraries for how to actually use them.

I'd like to use hashbang urls in a javascript carousel on our website so we can link directly to a specific page of the carousel.

Are there any good cross-browser libraries or examples (preferably non-jQuery, since we use Prototype) for both pushing new urls to the page location and for parsing the url on page load?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

挽心 2024-10-24 21:06:27

我们一直在开发一个进行 URL 路由映射的库:https://github.com/OpenGamma/RouteMap 如果您仍在寻找一个。

We've been working on a library that does URL route mapping: https://github.com/OpenGamma/RouteMap if you're still looking for one.

无需解释 2024-10-24 21:06:27

Sammy.js 使用它们来创建类似于 西纳特拉.

Sammy.js uses them to create handlers like the ones used in Sinatra.

桃扇骨 2024-10-24 21:06:27

Google Closure Library 对于浏览器历史堆栈有一个非常酷的实现。您可以访问历史记录源代码在这里

要使用 Closure Library 历史管理器,您应该定义一个隐藏输入。有窍门。如果您没有为类提供输入字段,它会为您创建一个输入字段,但由于跨浏览器支持,它会尝试使用 document.write 附加它的 DOM。最好、最简单的方法是提供隐藏的输入。

这是 goog.History 的一个简单实现。

var history = new goog.History(false, '', document.getElementById('historyInput'));
goog.events.listen(history, goog.history.EventType.NAVIGATE, function() {
    console.log(history.getToken());
});
history.setEnabled(true);

然后导航到页面中的一些哈希网址,您应该在控制台中看到更改后的哈希日志。

Google Closure Library has a really cool implementation for browser history stack. You can reach history source code from here.

To use Closure Library history manager you should define a hidden input. There is the trick. If you don't give a input field to class, it will create one for you, but it will try to append it DOM with document.write because of cross browser support. The best and easy way is providing a hidden input.

Here is a simple implementation of goog.History.

var history = new goog.History(false, '', document.getElementById('historyInput'));
goog.events.listen(history, goog.history.EventType.NAVIGATE, function() {
    console.log(history.getToken());
});
history.setEnabled(true);

Then navigate to some hashed urls in your page and you should see your changed hash in your console as log.

断桥再见 2024-10-24 21:06:27

https://github.com/browserstate/History.js 我对此没有任何经验,因为我使用 BBQ Jquery,但看起来它应该可以解决您的问题。

https://github.com/browserstate/History.js I have no experience with it as I use BBQ Jquery, but it looks like it should solve your problems.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文