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