0

我正在尝试将持久性强制到框架集 - 我想让它工作,以便用户能够为框架设置他想要的宽度(cols),并确保在用户访问时保存并加载该值页。

我正在使用这个简单的示例页面:

<html>
<head>
<script type="text/javascript">
function loadFrameWidth()
{
    document.getElementById('masterFrameset').cols = '150,*';
}

function storeFrameWidth()
{
 alert(document.getElementById('masterFrameset').cols);
}
</script>
</head>
<frameset id="masterFrameset" border="3" frameborder="1"
onLoad="loadFrameWidth()" onUnload="storeFrameWidth()">
  <frame id="controls" name="controlsFrame" src="about:blank" />
  <frame id="content" name="contentFrame" src="about:blank" />
 </frameset>
</html>

发生的问题是,当我退出页面时(“应该”将宽度存储在 cookie 中的那一刻),即使我手动更改了列的宽度(通过鼠标),“cols”值也不会更新)。

4

1 回答 1

0

***一个可行的解决方案** *

<html>
<head>
<script type="text/javascript">
<!--
function loadFrameWidth(cookieName)
{
    if (document.cookie.length>0)
 {
     c_start = document.cookie.indexOf(cookieName + "=");
  if (c_start != -1)
  {
   c_start = c_start + cookieName.length + 1;
   c_end = document.cookie.indexOf(";",c_start);
   if (c_end == -1) { c_end=document.cookie.length; }
   document.getElementById('masterFrameset').cols = unescape(document.cookie.substring(c_start,c_end));
  }
  else { setStandardWidth(); }
 }
 else { setStandardWidth(); }
}

function setStandardWidth()
{
 document.getElementById('masterFrameset').cols = '150,*';
}

function storeFrameWidth(cookieName)
{
 var currentCols = document.getElementById('masterFrameset').cols;
 var exdate = new Date();
 exdate.setDate(exdate.getDate() + 7);
 document.cookie = cookieName + "=" + escape(currentCols) + 
 ";expires=" + exdate.toUTCString();
}
-->
</script>
</head>
<frameset id="masterFrameset" border="1" frameborder="1"
onLoad="loadFrameWidth('frameSetWidth')" onUnload="storeFrameWidth('frameSetWidth')">
  <frame id="controls" name="controlsFrame" src="toc.html" />
  <frame id="content" name="contentFrame" src="content.html" />
 </frameset>
</html>
于 2011-01-06T20:48:36.470 回答