Gyazz icon indicating copy to clipboard operation
Gyazz copied to clipboard

久しぶりに操作したタブは強制リロードする

Open shokai opened this issue 11 years ago • 4 comments

問題

同じページを複数のタブで開いている時に巻き戻りが起こる。アクティブでないタブはsetInterval等が停止する為、久しぶりにアクティブになったタブは古いdataをサーバーに書き込んでしまう。

解決方法

久しぶりに操作したタブは強制リロードする。リロード中は編集できないようにする。

実装

  1. 最後にgetdata()した時刻を覚えておく。
  2. $("body").on("mousemove")で現在の時刻と比較する
  3. 古かったらgetdata()する。

shokai avatar Jan 15 '14 12:01 shokai

post中で回線が遅くて待っているajaxがあるかもしれないので、そういうのもどうにかする事を考えると getdataではなく単純にブラウザをリロードするのでもいいと思う

shokai avatar Jan 16 '14 10:01 shokai

古いままのページに久しぶりにアクセスしたとしてもコンフリクト検出してマージされるべきなのですが うまくいってないのでしょうかね...

masui avatar Jan 16 '14 12:01 masui

例えば、1行追加した後に、別の古いブラウザがで1行追加されてない状態をpostした場合、コンフリクトは検出できるのでしょうか? 本当に1行削除してpostした場合との区別がつかなそうなのですが

shokai avatar Jan 17 '14 03:01 shokai

自分が削除した場合はmd5が一致してるからコンフリクトとは判断されず、別ブラウザからの場合は判定されるようにしてるつもりで失敗してる可能性はあります。 ちなみに全く新しいページ作成して編集中でも誤動作することがあるのでコンフリクトが主原因かどうかはわかりません。

masui avatar Jan 20 '14 23:01 masui