Internet Explorer quirk - Frameset行和&拖动/调整框架大小时的cols属性

时间:2011-01-11 16:04:34

标签: internet-explorer frame frameset

Salut all,

我会尽量保持这个简短的说明:在我负责的网络应用程序的一个视觉上较为粗糙的区域中,我编写了几个简单的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");
  • 在将帧拖动到新位置后,行和列的属性永远不会在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中嵌套框架集的一个特性 - 单个框架集内的简单框架测试看起来好像在移动分隔符时行和列的属性会更新,而不是嵌套框架集。

非常感谢任何帮助。谢谢!

克里斯

0 个答案:

没有答案