0

フレームセットに永続性を強制しようとしています-ユーザーがフレームに希望の幅(列)を設定できるように機能させ、ユーザーがアクセスするときに値が保存およびロードされるようにしますページ。

私はこの簡単なサンプルページを使用しています:

<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 に答える