Gyazz
Gyazz copied to clipboard
久しぶりに操作したタブは強制リロードする
問題
同じページを複数のタブで開いている時に巻き戻りが起こる。アクティブでないタブはsetInterval等が停止する為、久しぶりにアクティブになったタブは古いdataをサーバーに書き込んでしまう。
解決方法
久しぶりに操作したタブは強制リロードする。リロード中は編集できないようにする。
実装
- 最後に
getdata()
した時刻を覚えておく。 -
$("body").on("mousemove")
で現在の時刻と比較する - 古かったら
getdata()
する。
post中で回線が遅くて待っているajaxがあるかもしれないので、そういうのもどうにかする事を考えると getdataではなく単純にブラウザをリロードするのでもいいと思う
古いままのページに久しぶりにアクセスしたとしてもコンフリクト検出してマージされるべきなのですが うまくいってないのでしょうかね...
例えば、1行追加した後に、別の古いブラウザがで1行追加されてない状態をpostした場合、コンフリクトは検出できるのでしょうか? 本当に1行削除してpostした場合との区別がつかなそうなのですが
自分が削除した場合はmd5が一致してるからコンフリクトとは判断されず、別ブラウザからの場合は判定されるようにしてるつもりで失敗してる可能性はあります。 ちなみに全く新しいページ作成して編集中でも誤動作することがあるのでコンフリクトが主原因かどうかはわかりません。