Салют всем,
Я постараюсь сохранить это вкратце: в одной из визуально мрачных областей веб-приложения, за которую я отвечаю, я написал пару простых функций 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");
- свойства row и cols никогда не обновляются в IE после перетаскивания фреймов в новое положение. Все остальные аспекты работают так, как задумано: файлы cookie создаются по мере выгрузки набора фреймов, а при загрузке записываются свойства фрейма. По иронии судьбы, у IE нет проблем с записью в эти свойства, если я предоставлю жестко запрограммированные значения, тогда кадры изменят размеры как очарование, но кажется, что я не могу записать их значения после того, как кадры были вручную перемещены.
Кроме того, я вижу изменения свойств в Firebug Firefox, когда я вручную перетаскиваю фреймы, чтобы изменить их размер, но не с помощью инструментов разработчика 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 - тест простых фреймов внутри одного набора фреймов выглядит так, как если бы свойства строк и столбцов обновлялись при перемещении разделителя, а не во вложенных фреймах.
Любая помощь очень ценится. Спасибо!
Chris