2012-03-26 4 views
1

Wie deaktivierst du den Pushstate für Chrome (zu Testzwecken)?Wie deaktiviere ich den Pushstate für Chrome? (für Davis.js)

Bonus, wenn Sie ein Plugin wissen, dass es einfach zu wechseln macht :)

I davis.js für meine Logik pushstate bin mit.

+0

Was meinen Sie mit "deaktivieren" und für welche Art von Tests? Event-Mechanismen sind ein nativer Teil des Browsers, so dass js sie nicht einfach deaktivieren kann, nicht in dem Sinne, dass sie niemals "feuern" dürfen. Wenn Sie weitere Informationen zu den von Ihnen durchgeführten Tests erhalten, ist es möglicherweise möglich, das Problem zu isolieren. – Zirak

+0

Ich versuche zu sehen, was passiert (emulieren), wenn Browser, die nicht unterstützen, meine Website drücken. Ich verwende Davis.js zum Routing. Ich könnte Davis einfach vom Routing abhalten, aber das wäre kein fairer Test. –

Antwort

1

Der Grund, warum Ihre Davis.js-Routen noch funktionieren, ist, dass wenn Sie auf einen Link klicken, Ihre Routen direkt ausgeführt werden, da es kein onPushState-Ereignis gibt. Sie sollten jedoch feststellen, dass die Verwendung der Vor- und Zurück-Schaltflächen Ihre Routen nicht mehr auslöst .

Wenn Sie emulieren wollen, was in einem Browser passiert, der pushState nicht unterstützt, können Sie mit der Suche von Davis.js nach Unterstützung herumalbern. Dies geschieht in der Davis.supported function.

Sie können diese Funktion überschreiben, um immer false zurückzugeben, was normalerweise in einem Browser geschieht, der pushState nicht unterstützt. Wenn Sie möchten, dass Sie dies in eine Davis.js Erweiterung einpacken können, sehen Sie sich die block iOS extension als Beispiel an.

+0

Das ist, was ich am Ende getan habe. Ich grabe Davis. –

+0

Froh, dass es nützlich ist! Sie könnten dieses Verhalten wahrscheinlich in eine Art Bookmarklet- oder Chrome-Erweiterung umwandeln, wenn Sie dies regelmäßig tun. Lass es mich wissen, wenn du das tust, werde ich es auf der Davis.js Seite vorstellen. –

3
history.pushState = function(){}; 
//An empty function so if it is used, it doesn't throw any errors 

Setzen Sie das in der Konsole. Tada! Sie können problemlos eine Chrome-Erweiterung erstellen, die das auf einer Seite mit einem Inhaltsskript ausführt.

+1

Ich muss etwas verpassen, weil das für mich nicht funktioniert. Meine Davis.js Routen werden noch ausgeführt. –

Verwandte Themen