IEで発生するactivescaffoldのソート不具合
IEでactivescaffoldのソートをすると無限ループのようにページ更新がかかる不具合がある。
応急処置としては、vendor/plugins/active_scaffold/frontends/default/javascripts/dhtml_history.js
の419行目あたり(関数「iframeLoaded」)を次のように修正する。
// move to this location in the browser location bar // if we are not dealing with a page load event if (this.pageLoadEvent != true) { // window.location.hash = hash; // ←この行をコメントアウト }
もう少し詳しく
上記の箇所でwindow.location.hashに代入されるhashはURLエンコードされたもの。
ここで「window.location.hash = hash」を実行してしまうと、関数「checkLocation」の338行目
// get hash location var hash = this.getCurrentLocation(); // see if there has been a change if (hash == this.currentLocation) return;
にて、URLエンコードしたURLをさらにエンコードした文字列がhashに代入され
if (hash == this.currentLocation)の比較が常にfalseとなってしまう。
そのため無限ループのように更新がかかる
気になること
関数「iframeLoaded」でwindow.location.hashに代入しようとしていた文字列をfireHistoryEventに渡している。
それ以降を追っていないので、fireHistoryEventを実行すると問題があるかもしれない。