При создании фрейма помните, что при следующей загрузке страницы это cols (ширина) - PullRequest
0 голосов
/ 06 января 2011

Я пытаюсь принудительно установить постоянство для набора фреймов - я хочу, чтобы он работал так, чтобы пользователь мог установить желаемую ширину (столбцы) для фрейма и убедиться, что значение сохраняется и загружается в другой раз, когда пользователь заходит на страницу.

Я использую этот простой пример страницы:

<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» не обновляется, даже если я вручную изменил ширину столбцов (с помощью мыши).

1 Ответ

0 голосов
/ 06 января 2011

*** РАБОЧЕЕ РЕШЕНИЕ ***

<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>
...