2016-07-05 5 views
0

Ich habe eine Komponente, die wie folgt funktioniert.Aktion ausführen, wenn das Fensterprotokoll für eine Site leer ist

export default class BackButton extends Component { 
    back() { 
    window.history.back() 
    } 
    render() { 
    return (
     <Button 
     icon={<ArrowLeft/>} 
     onTouchTap={this.back.bind(this)} 
     /> 
    ) 
    } 
} 

Das funktioniert perfekt, aber es gibt einen "Rand Fall". Wenn Sie genug vom Stapel springen, kann es dazu kommen, dass Sie in einem bestimmten Zustand hängen bleiben, ohne dass Sie zurückgehen können, weil der Stapel leer ist. Wenn das passiert, möchte ich in der Lage sein, einige zusätzliche Funktionen auszuführen und die Zurück-Schaltfläche zu deaktivieren.

<Button 
    icon={<ArrowLeft/>} 
    disabled={!hasMoreHistory} 
    onTouchTap={this.back.bind(this)} 
    onHistoryEmpty={() => callback ? callback() : Router.go('/')} 
/> 

Gibt es eine Möglichkeit, dies mit Javascript zu tun?

+0

Etwas wie window.history.length? –

Antwort

0

Leider wie andere SO Frage (n) darauf hinweisen, gibt es keine zuverlässige Möglichkeit zu sagen, ob Sie zurück in Ihrem Browser-Verlauf gehen können oder nicht.

window.history.length

  • keinen standardisierten Wert enthalten, wenn Sie eine neue Seite (in Chrom: 1, in IE: 0) eröffnen
  • > 0 im Fall sein könnte, wenn Sie
  • vorwärts gehen kann

window.history.previous - in den meisten Fällen ist undefined

Siehe: How to check if the user can go back in browser history or not

Verwandte Themen