首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >History.js onpopstate?

History.js onpopstate?
EN

Stack Overflow用户
提问于 2011-11-03 04:01:28
回答 4查看 6.9K关注 0票数 2

在学习使用History API之后,我正在尝试实现History.js。然而,我的popstate不再工作了。

在History.js中用作onpopstate的是什么?在历史API中,您可以在event.state中使用onpopstate

我需要知道的是History.js中使用了什么。它是window.onstatechange吗?它返回什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-18 14:04:07

你不能说它是推送的还是流行的。这是它的设计。在推送事件之前,不应该做任何事情。相反,您应该将所有必需的数据传递给第一个参数。

代码语言:javascript
复制
History.pushState(data,title,url)

然后从onstatechange中检索数据并执行一些操作。

检查这个:https://github.com/browserstate/history.js/issues/47

票数 7
EN

Stack Overflow用户

发布于 2011-11-25 21:20:26

基本示例如下:

代码语言:javascript
复制
History.Adapter.bind(window,'statechange',function(){ // code });

this gist (用于jQuery)使用:

代码语言:javascript
复制
$(window).bind('statechange',function(){ // code });
票数 2
EN

Stack Overflow用户

发布于 2013-01-03 04:40:44

你应该使用History.js发明的event window.statechange,因为window.popstate太通用了。您可以通过将事件处理程序绑定到它来响应它,通常如下所示:

代码语言:javascript
复制
History.Adapter.bind(window, 'statechange', function () {
    var state = History.getState();
    // Your code goes here
});

或者,您可以使用路由器抽象,这应该更容易。例如,我编写了一个名为StateRouter.js的代码。一些简单的示例代码:

代码语言:javascript
复制
var router = new staterouter.Router();
// Configure routes
router
  .route('/', getHome)
  .route('/persons', getPersons)
  .route('/persons/:id', getPerson);
// Perform routing of the current state
router.perform();
// Navigate to the page of person 1
router.navigate('/persons/1');

我也有a fiddle for demonstration purposes

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7986601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档