Skip to content

Change history state during navigation, break page.js #293

@pierissimo

Description

@pierissimo

Hi!
I have to change history state during the change of a slide of a slider in my webpage.
I use history.js:

History.pushState({slide:1}, "Slide 1", "/slide/1");

I also have a route registered with page.js:

page(['/slide', '/slide/:num'], function(ctx, next){ //things  });

When i use back and forward browser button, i got this error:
Uncaught TypeError: Cannot read property '0' of undefined
The error is from the page.js file, in this function, at the second line:

function Context(path, state) {
    if ('/' === path[0] && 0 !== path.indexOf(base)) path = base + (hashbang ? '#!' : '') + path;
    var i = path.indexOf('?');

    this.canonicalPath = path;
    this.path = path.replace(base, '') || '/';
    if (hashbang) this.path = this.path.replace('#!', '') || '/';

    this.title = document.title;
    this.state = state || {};
    this.state.path = path;
    this.querystring = ~i ? decodeURLEncodedURIComponent(path.slice(i + 1)) : '';
    this.pathname = decodeURLEncodedURIComponent(~i ? path.slice(0, i) : path);
    this.params = {};

    // fragment
    this.hash = '';
    if (!hashbang) {
      if (!~this.path.indexOf('#')) return;
      var parts = this.path.split('#');
      this.path = parts[0];
      this.hash = decodeURLEncodedURIComponent(parts[1]) || '';
      this.querystring = this.querystring.split('#')[0];
    }
  }

Anyone knows how i can manipulate history state, while using page.js?
Thanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions