自分用メモです。
戻るボタンが押された際、ページのJavaScriptを途中の状態から実行させない方法
まず、 B.html から「戻る」をしたときに、(s1 ではなく) s3 の状態になってしまうのは、Back Forward Cache というブラウザの機能によるものでした。
任意のページで予め、
window.onunload = function() {};
のように window.onunload に空の関数を代入すると、 Back Forward Cache が機能しなくなるようです。
また、 Back Forward Cache が発生した場合(戻るで s3 に到達した場合)であっても、pageshow イベント( window.onpageshow )が呼ばれるようです。
onunload を書き換える以外にも、 onpageshow を書き換えてそこで処理を行なったり、onpageshow イベントが発火して呼ばれる関数内で event.persisted の値を参照することで Back Forward Cache が利用されているか判定できるようです。