MozTW 討論區

各項 Mozilla 相關軟體與技術討論
現在的時間是 2025-08-23, 06:02

所有顯示的時間為 UTC + 8 小時





發表新文章 回覆主題  [ 3 篇文章 ] 
發表人 內容
文章發表於 : 2006-12-04, 10:34 
離線

註冊時間: 2006-12-04, 10:08
文章: 3
目前小弟在修改一個原本可在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>


回頂端
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2006-12-04, 11:57 
離線

註冊時間: 2006-12-04, 10:08
文章: 3
自問自答一下
我發現錯誤的原因了
因為Firefox的
<frame>之中沒有cols這個屬性...Orz
那請問我只能用css的方式來修改嗎?
或者有其他的方式呢?
謝謝


回頂端
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2006-12-05, 09:55 
離線

註冊時間: 2006-12-04, 10:08
文章: 3
我自己靠著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屬性了!!
報告完畢 收工~


回頂端
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
 個人資料  
引用回覆  
顯示文章 :  排序  
發表新文章 回覆主題  [ 3 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 14 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
Powered by phpBB® Forum Software © phpBB Group
正體中文語系由 竹貓星球 維護製作
© moztw.org, Mozilla Foundation
MozTW,Mozilla 台灣社群