Особенность Internet Explorer - свойства строк и столбцов в фрейме при перетаскивании / изменении размера фреймов - PullRequest
2 голосов
/ 11 января 2011

Салют всем,

Я постараюсь сохранить это вкратце: в одной из визуально мрачных областей веб-приложения, за которую я отвечаю, я написал пару простых функций 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

...