皆さん、敬礼
私が担当している Web アプリの視覚的にややこしい領域の 1 つで、フレームセット内のフレームの位置を保存および呼び出すためのいくつかの単純な JS 関数を作成しました。画面は非常にユーザー固有であり、ネストされたフレームセットで構成されています (わかっています、わかっていますが、これはレガシー コードであり、現在、リファクタリングするためのリソースがありません)。これらの位置は Cookie に書き込まれるため、次にこの機能領域に入ったときに、そこを出たときと同じように表示されます。
これは、私が主に開発に使用している Firefox でうまく機能しますが、サポートが必要な IE8 でのテストに失敗しました。責任のあるプロパティを特定したと思います:
var cols = new Array();
var rows = new Array();
var framesets=parent.document.getElementsByTagName('frameset');
for (var i = 0; i < framesets.length; i++){
cols[i]=framesets[i].cols;
rows[i]=framesets[i].rows;
}
これらの配列は Cookie に書き込まれますが、取得された位置の値に問題があるようです。たとえば、どのバリアントを使用してもかまいません
cols[i]=framesets[i].cols;
cols[i]= parent.document.getElementsByTagName('frameset')[i].cols;
cols[i]= parent.document.getElementsByTagName('frameset').item(i).cols;
cols[i]= parent.document.getElementsByTagName('frameset')[i].getAttribute("cols");
- フレームが新しい位置にドラッグされた後、rows プロパティと cols プロパティは IE で更新されません。他のすべての側面は意図したとおりに機能しています。フレームセットがアンロードされ、ロード時にフレーム プロパティが書き込まれると、Cookie が作成されます。皮肉なことに、ハードコードされた値を指定すると、IE はこれらのプロパティへの書き込みに問題はありません。フレームは魅力的にサイズ変更されますが、フレームを手動で再配置した後、それらの値を記録できないようです。
さらに、フレームを手動でドラッグしてサイズを変更すると、Firefox の Firebug の下でプロパティが変更されていることがわかりますが、IE の開発者ツールでは変更されません。
フレームをドラッグした後の行と列の値:
IE8 Developer Tools
<frameset name=" display" rows="*" cols="350,*" onload="restoreFrames()" onunload="storeFrames()">
<frameset rows="50%,50%" cols="*" border="1" borderColor="#ffffff" frameSpacing="1" onload="restoreFrames()" onunload="storeFrames()">
<frameset rows="50%,50%" cols="*" border="1" borderColor="#ffffff" frameSpacing="1" onload="restoreFrames()" onunload="storeFrames()">
Firebug
<frameset rows="*" cols="553,46%" name=" display">
<frameset bordercolor="#ffffff" framespacing="1" border="1" cols="*" rows="14%,86%">
<frameset bordercolor="#ffffff" framespacing="1" border="1" cols="*" rows="50%,50%">
私はこれを機能させたいと思っています.誰かが似たようなものに遭遇したことがありますか?フレーム位置を保存するために使用できるこれらのプロパティにアクセスする別のアプローチまたは方法がありますか? これはかなり標準的なものであるはずです.IEが再配置された後にフレームのプロパティを更新しないと私は信じるのに苦労しています.
編集:これは IE のネストされたフレームセットの機能だと思います。単一のフレームセット内の単純なフレームのテストは、ネストされたフレームセットではそうではなく、仕切りが移動すると行と列のプロパティが更新されるように見えます。
どんな助けでも大歓迎です。ありがとう!
クリス