MozTW 討論區
https://forum.moztw.org/

請問關於frameset展開的功能
https://forum.moztw.org/viewtopic.php?f=13&t=16733
1 頁 (共 1 頁)

發表人:  eric1125 [ 2006-12-04, 10:34 ]
文章主題 :  請問關於frameset展開的功能

目前小弟在修改一個原本可在IE中運行的javascript想要使其在FireFox中也可順利運作,此特效主要目的是可以將左側的menu列隱藏起來,因為之前不是我做的,但現在要負責修改,找了一些IE與FF之Javascript相容性的文章,但卻還是不知道關鍵的修改點在哪裡,懇請高手幫我看一下,謝謝

Default.htm內容: --> 主要包了三個網頁,要修改的主要是menu那一頁
<frameset framespacing="0" border="0" frameborder="0" rows="33,*">
<frame name="title" id="title" src="title.aspx" scrolling="no" noresize marginwidth="0" marginheight="0">
<frameset cols="176,*">
<frame name="menu" id="menu" src="menu.aspx" marginwidth="0" marginheight="0" scrolling="no" noresize >
<frame name="main" id="main" src="main.aspx" scrolling="auto" >
</frameset>
<noframes>
<body>
<p>此網頁使用框架,但是您的瀏覽器不支援框架。</p>
</body>
</noframes>
</frameset>

menu頁面內容: -->主要是由此圖片驅動javascript動作
<img runat="server" id="imgOpen" src="Image/expand.gif" title="展開功能表" style="cursor: pointer; display: none;" onclick="Menubar_Show();" />
<img runat="server" id="imgClose" src="Image/close.gif" title="縮合功能表" style="cursor: pointer" onclick="Menubar_Hide();" />

Javascript內容: -->其中有一些我已改為getElementById,但關鍵的問題次乎在於FF不認識" fset.cols "這個屬性
<script language =javascript>
var miMaxWidth = 176; //功能選單最大寬度

var msFrameCols = miMaxWidth+",*"; //記錄選單顯示時 Frame 畫面比例
var miShowWidth = miMaxWidth; //選單頁的寬度
var mActiveGroup = 0;
function Menubar_Hide()
{
document.getElementById("imgClose").disabled = "true"
Menubar_HideStep();
document.getElementById("imgOpen").style.display="block";
document.getElementById("imgClose").style.display="none";
document.getElementById("imgOpen").disabled = ""
document.getElementById("imgClose").disabled = ""
}

function Menubar_HideStep()
{
var fset = window.top.document.getElementById("menu").offsetParent;
if (miShowWidth > 17)
{
miShowWidth -= 20;
fset.cols = miShowWidth+",*";
setTimeout("Menubar_HideStep()",20);
}
else
{
miShowWidth = 16;
fset.cols = miShowWidth+",*";
}
}

function Menubar_Show()
{
document.getElementById("imgOpen").disabled = "true"
Menubar_ShowStep();
document.getElementById("imgOpen").style.display="none";
document.getElementById("imgClose").style.display="block";
document.getElementById("imgOpen").disabled = ""
document.getElementById("imgClose").disabled = ""
}

function Menubar_ShowStep()
{
var fset = window.top.document.getElementById("menu").offsetParent;
if (miShowWidth < miMaxWidth)
{
miShowWidth += 20;
fset.cols = miShowWidth+",*";
setTimeout("Menubar_ShowStep()",20);
}
else
{
miShowWidth = miMaxWidth;
fset.cols = miShowWidth+",*";
}
}
</script>

發表人:  eric1125 [ 2006-12-04, 11:57 ]
文章主題 : 

自問自答一下
我發現錯誤的原因了
因為Firefox的
<frame>之中沒有cols這個屬性...Orz
那請問我只能用css的方式來修改嗎?
或者有其他的方式呢?
謝謝

發表人:  eric1125 [ 2006-12-05, 09:55 ]
文章主題 : 

我自己靠著Try & Error 找到解決方法了 XD
在此順便跟大家分享一下囉...
希望有此疑問的朋友也可以參考一下我的作法
由於W3C語法不支援<frame>標籤中存在rols屬性
但是如果想要改變frame的寬度怎麼辦呢??
雖然<frame>不能調寬度,但是他上層的<frameset>卻是存在rols屬性的喔!!
所以,只要從這個標籤的修改著手即可,我的做法如下:


把程式中原本的var fset = window.top.document.getElementById("menu").offsetParent;

改成 var fset = window.top.document.getElementById("menuset");

這樣就可以正常使用frameset的cols屬性了!!
報告完畢 收工~

1 頁 (共 1 頁) 所有顯示的時間為 UTC + 8 小時
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/