javascript的IE和Firefox兼容性匯編
1. document.form.item 問(wèn)題
(1)現(xiàn)有問(wèn)題:
現(xiàn)有代碼中存在許多 document.formName.item("itemName") 這樣的語(yǔ)句,不能在 MF 下運(yùn)行
(2)解決方法:
改用 document.formName.elements["elementName"]
(3)其它
參見 2
2. 集合類對(duì)象問(wèn)題
(1)現(xiàn)有問(wèn)題:
現(xiàn)有代碼中許多集合類對(duì)象取用時(shí)使用 (),IE 能接受,MF 不能。
(2)解決方法:
改用 [] 作為下標(biāo)運(yùn)算。如:document.forms("formName") 改為 document.forms["formName"]。
又如:document.getElementsByName("inputName")(1) 改為 document.getElementsByName("inputName")[1]
3. window.event
(1)現(xiàn)有問(wèn)題:
使用 window.event 無(wú)法在 MF 上運(yùn)行
(2)解決方法:
MF 的 event 只能在事件發(fā)生的現(xiàn)場(chǎng)使用,此問(wèn)題暫無(wú)法解決??梢赃@樣變通:
原代碼(可在IE中運(yùn)行):
...
新代碼(可在IE和MF中運(yùn)行):
...
此外,如果新代碼中第一行不改,與老代碼一樣的話(即 gotoSubmit 調(diào)用沒(méi)有給參數(shù)),則仍然只能在IE中運(yùn)行,但不會(huì)出錯(cuò)。所以,這種方案 tpl 部分仍與老代碼兼容。
4. HTML 對(duì)象的 id 作為對(duì)象名的問(wèn)題
(1)現(xiàn)有問(wèn)題
在 IE 中,HTML 對(duì)象的 ID 可以作為 document 的下屬對(duì)象變量名直接使用。在 MF 中不能。
(2)解決方法
用 getElementById("idName") 代替 idName 作為對(duì)象變量使用。
5. 用idName字符串取得對(duì)象的問(wèn)題
(1)現(xiàn)有問(wèn)題
在IE中,利用 eval(idName) 可以取得 id 為 idName 的 HTML 對(duì)象,在MF 中不能。
(2)解決方法
用 getElementById(idName) 代替 eval(idName)。
6. 變量名與某 HTML 對(duì)象 id 相同的問(wèn)題
(1)現(xiàn)有問(wèn)題
在 MF 中,因?yàn)閷?duì)象 id 不作為 HTML 對(duì)象的名稱,所以可以使用與 HTML 對(duì)象 id 相同的變量名,IE 中不能。
(2)解決方法
在聲明變量時(shí),一律加上 var ,以避免歧義,這樣在 IE 中亦可正常運(yùn)行。
此外,最好不要取與 HTML 對(duì)象 id 相同的變量名,以減少錯(cuò)誤。
(3)其它
參見 問(wèn)題4
[NextPage]
7. event.x 與 event.y 問(wèn)題
(1)現(xiàn)有問(wèn)題
在IE 中,event 對(duì)象有 x, y 屬性,MF中沒(méi)有。
(2)解決方法
在MF中,與event.x 等效的是 event.pageX。但event.pageX IE中沒(méi)有。
故采用 event.clientX 代替 event.x。在IE 中也有這個(gè)變量。
event.clientX 與 event.pageX 有微妙的差別(當(dāng)整個(gè)頁(yè)面有滾動(dòng)條的時(shí)候),不過(guò)大多數(shù)時(shí)候是等效的。
如果要完全一樣,可以稍麻煩些:
mX = event.x ? event.x : event.pageX;
然后用 mX 代替 event.x
(3)其它
event.layerX 在 IE 與 MF 中都有,具體意義有無(wú)差別尚未試驗(yàn)。
8. 關(guān)于frame
(1)現(xiàn)有問(wèn)題
在 IE中 可以用window.testFrame取得該frame,mf中不行
(2)解決方法
在frame的使用方面mf和ie的最主要的區(qū)別是:
如果在frame標(biāo)簽中書寫了以下屬性:
那么ie可以通過(guò)id或者name訪問(wèn)這個(gè)frame對(duì)應(yīng)的window對(duì)象
而mf只可以通過(guò)name來(lái)訪問(wèn)這個(gè)frame對(duì)應(yīng)的window對(duì)象
例如如果上述frame標(biāo)簽寫在最上層的window里面的htm里面,那么可以這樣訪問(wèn)
ie: window.top.frameId或者window.top.frameName來(lái)訪問(wèn)這個(gè)window對(duì)象
mf: 只能這樣window.top.frameName來(lái)訪問(wèn)這個(gè)window對(duì)象
另外,在mf和ie中都可以使用window.top.document.getElementById("frameId")來(lái)訪問(wèn)frame標(biāo)簽
并且可以通過(guò)window.top.document.getElementById("testFrame").src = ‘xx.htm’來(lái)切換frame的內(nèi)容
也都可以通過(guò)window.top.frameName.location = ‘xx.htm’來(lái)切換frame的內(nèi)容
關(guān)于frame和window的描述可以參見bbs的‘window與frame’文章
以及/test/js/test_frame/目錄下面的測(cè)試
----adun 2004.12.09修改
9. 在mf中,自己定義的屬性必須getAttribute()取得
10.在mf中沒(méi)有 parentElement parement.children 而用parentNode parentNode.childNodes
childNodes的下標(biāo)的含義在IE和MF中不同,MF使用DOM規(guī)范,childNodes中會(huì)插入空白文本節(jié)點(diǎn)。
一般可以通過(guò)node.getElementsByTagName()來(lái)回避這個(gè)問(wèn)題。
當(dāng)html中節(jié)點(diǎn)缺失時(shí),IE和MF對(duì)parentNode的解釋不同,例如
MF中input.parentNode的值為form, 而IE中input.parentNode的值為空節(jié)點(diǎn)
MF中節(jié)點(diǎn)沒(méi)有removeNode方法,必須使用如下方法 node.parentNode.removeChild(node)
11.const 問(wèn)題
(1)現(xiàn)有問(wèn)題:
在 IE 中不能使用 const 關(guān)鍵字。如 const constVar = 32; 在IE中這是語(yǔ)法錯(cuò)誤。
(2)解決方法:
不使用 const ,以 var 代替。
12. body 對(duì)象
MF的body在body標(biāo)簽沒(méi)有被瀏覽器完全讀入之前就存在,而IE則必須在body完全被讀入之后才存在
13. url encoding
在js中如果書寫url就直接寫&不要寫&例如var url = ‘xx.jsp?objectName=xx&objectEvent=xxx’;
frm.action = url那么很有可能url不會(huì)被正常顯示以至于參數(shù)沒(méi)有正確的傳到服務(wù)器
一般會(huì)服務(wù)器報(bào)錯(cuò)參數(shù)沒(méi)有找到
當(dāng)然如果是在tpl中例外,因?yàn)閠pl中符合xml規(guī)范,要求&書寫為&
一般MF無(wú)法識(shí)別js中的&
14. nodeName 和 tagName 問(wèn)題
(1)現(xiàn)有問(wèn)題:
在MF中,所有節(jié)點(diǎn)均有 nodeName 值,但 textNode 沒(méi)有 tagName 值。在 IE 中,nodeName 的使用好象
有問(wèn)題(具體情況沒(méi)有測(cè)試,但我的IE已經(jīng)死了好幾次)。
(2)解決方法:
使用 tagName,但應(yīng)檢測(cè)其是否為空。
15. 元素屬性
IE下 input.type屬性為只讀,但是MF下可以修改
js常用代碼
event.clientY 返回最后一次點(diǎn)擊鼠標(biāo)Y坐標(biāo)值;
event.offsetX 返回當(dāng)前鼠標(biāo)懸停X坐標(biāo)值
event.offsetY 返回當(dāng)前鼠標(biāo)懸停Y坐標(biāo)值
document.write(document.lastModified) 網(wǎng)頁(yè)最后一次更新時(shí)間
document.ondblclick=x 當(dāng)雙擊鼠標(biāo)產(chǎn)生事件
document.onmousedown=x 單擊鼠標(biāo)鍵產(chǎn)生事件
document.body.scrollTop; 返回和設(shè)置當(dāng)前豎向滾動(dòng)條的坐標(biāo)值,須與函數(shù)配合,
document.body.scrollLeft; 返回和設(shè)置當(dāng)前橫向滾動(dòng)務(wù)的坐標(biāo)值,須與函數(shù)配合,
document.title document.title="message"; 當(dāng)前窗口的標(biāo)題欄文字
document.bgcolor document.bgcolor="顏色值"; 改變窗口背景顏色
document.Fgcolor document.Fgcolor="顏色值"; 改變正文顏色
document.linkcolor document.linkcolor="顏色值"; 改變超聯(lián)接顏色
document.alinkcolor document.alinkcolor="顏色值"; 改變正點(diǎn)擊聯(lián)接的顏色
document.VlinkColor document.VlinkColor="顏色值"; 改變已訪問(wèn)聯(lián)接的顏色
document.forms.length 返回當(dāng)前頁(yè)form表單數(shù)
document.anchors.length 返回當(dāng)前頁(yè)錨的數(shù)量
document.links.length 返回當(dāng)前頁(yè)聯(lián)接的數(shù)量
document.onmousedown=x 單擊鼠標(biāo)觸發(fā)事件
document.ondblclick=x 雙擊鼠標(biāo)觸發(fā)事件
defaultStatus window.status=defaultStatus; 將狀態(tài)欄設(shè)置默認(rèn)顯示
function function xx(){...} 定義函數(shù)
isNumeric 判斷是否是數(shù)字
innerHTML xx=對(duì)象.innerHTML 輸入某對(duì)象標(biāo)簽中的html源代碼
innerText divid.innerText=xx 將以div定位以id命名的對(duì)象值設(shè)為XX
location.reload(); 使本頁(yè)刷新,target可等于一個(gè)刷新的網(wǎng)頁(yè)
Math.random() 隨機(jī)涵數(shù),只能是0到1之間的數(shù),如果要得到其它數(shù),可以為*10,再取整
Math.floor(number) 將對(duì)象number轉(zhuǎn)為整數(shù),舍取所有小數(shù)
Math.min(1,2) 返回1,2哪個(gè)小
Math.max(1,2) 返回1,2哪個(gè)大
navigator.appName 返回當(dāng)前瀏覽器名稱
navigator.appVersion 返回當(dāng)前瀏覽器版本號(hào)
navigator.appCodeName 返回當(dāng)前瀏覽器代碼名字
navigator.userAgent 返回當(dāng)前瀏覽器用戶代標(biāo)志
onsubmit onsubmit="return(xx())" 使用函數(shù)返回值
opener opener.document.對(duì)象 控制原打開窗體對(duì)象
prompt xx=window.prompt("提示信息","預(yù)定值"); 輸入語(yǔ)句
parent parent.框架名.對(duì)象 控制框架頁(yè)面
return return false 返回值
random 隨機(jī)參數(shù)(0至1之間)
reset() form.reset(); 使form表單內(nèi)的數(shù)據(jù)重置
split("") string.split("") 將string對(duì)象字符以逗號(hào)隔開
submit() form對(duì)象.submit() 使form對(duì)象提交數(shù)據(jù)
String對(duì)象的 charAt(x)對(duì)象 反回指定對(duì)象的第多少位的字母
lastIndexOf("string") 從右到左詢找指定字符,沒(méi)有返回-1
indexOf("string") 從左到右詢找指定字符,沒(méi)有返回-1
LowerCase() 將對(duì)象全部轉(zhuǎn)為小寫
UpperCase() 將對(duì)象全部轉(zhuǎn)為大寫
substring(0,5) string.substring(x,x) 返回對(duì)象中從0到5的字符
setTimeout("function",time) 設(shè)置一個(gè)超時(shí)對(duì)象
setInterval("function",time) 設(shè)置一個(gè)超時(shí)對(duì)象
toLocaleString() x.toLocaleString() 從x時(shí)間對(duì)象中獲取時(shí)間,以字符串型式存在
typeof(變量名) 檢查變量的類型,值有:String,Boolean,Object,Function,Underfined
window.event.button==1/2/3 鼠標(biāo)鍵左鍵等于1右鍵等于2兩個(gè)鍵一起按為3
window.screen.availWidth 返回當(dāng)前屏幕寬度(空白空間)
window.screen.availHeight 返回當(dāng)前屏幕高度(空白空間)
window.screen.width 返回當(dāng)前屏幕寬度(分辨率值)
window.screen.height 返回當(dāng)前屏幕高度(分辨率值)
window.document.body.offsetHeight; 返回當(dāng)前網(wǎng)頁(yè)高度
window.document.body.offsetWidth; 返回當(dāng)前網(wǎng)頁(yè)寬度
window.resizeTo(0,0) 將窗口設(shè)置寬高
window.moveTo(0,0) 將窗口移到某位置
window.focus() 使當(dāng)前窗口獲得焦點(diǎn)
window.scroll(x,y) 窗口滾動(dòng)條坐標(biāo),y控制上下移動(dòng),須與函數(shù)配合
window.open() window.open("地址","名稱","屬性")
屬性:toolbar(工具欄),location(地址欄),directions,status(狀態(tài)欄),
menubar (菜單欄),scrollbar(滾動(dòng)條),resizable(改變大小), width(寬),height(高),fullscreen(全屏),scrollbars(全屏?xí)r無(wú)滾動(dòng)條無(wú)參 數(shù),channelmode(寬屏),left(打開窗口x坐標(biāo)),top(打開窗口y坐標(biāo))
window.location = 'view-source:' + window.location.href 應(yīng)用事件查看網(wǎng)頁(yè)源代碼;
a=new Date(); //創(chuàng)建a為一個(gè)新的時(shí)期對(duì)象
y=a.getYear(); //y的值為從對(duì)象a中獲取年份值 兩位數(shù)年份
y1=a.getFullYear(); //獲取全年份數(shù) 四位數(shù)年份
m=a.getMonth(); //獲取月份值
d=a.getDate(); //獲取日期值
d1=a.getDay(); //獲取當(dāng)前星期值
h=a.getHours(); //獲取當(dāng)前小時(shí)數(shù)
m1=a.getMinutes(); //獲取當(dāng)前分鐘數(shù)
s=a.getSeconds(); //獲取當(dāng)前秒鐘數(shù)
對(duì)象.style.fontSize="文字大小";
單位:mm/cm/in英寸/pc帕/pt點(diǎn)/px象素/em文字高
1in=1.25cm
1pc=12pt
1pt=1.2px(800*600分辯率下)
文本字體屬性:
fontSize大小
family字體
color顏色
fontStyle風(fēng)格,取值為normal一般,italic斜體,oblique斜體且加粗
fontWeight加粗,取值為100到900不等,900最粗,light,normal,bold
letterSpacing間距,更改文字間距離,取值為,1pt,10px,1cm
textDecoration:文字修飾;取值,none不修飾,underline下劃線,overline上劃線
background:文字背景顏色,
backgroundImage:背景圖片,取值為圖片的插入路徑
點(diǎn)擊網(wǎng)頁(yè)正文函數(shù)調(diào)用觸發(fā)器:
1.onClick 當(dāng)對(duì)象被點(diǎn)擊
2.onLoad 當(dāng)網(wǎng)頁(yè)打開,只能書寫在body中
3.onUnload 當(dāng)網(wǎng)頁(yè)關(guān)閉或離開時(shí),只能書寫在body中
4.onmouseover 當(dāng)鼠標(biāo)懸于其上時(shí)
5.onmouseout 當(dāng)鼠標(biāo)離開對(duì)象時(shí)
6.onmouseup 當(dāng)鼠標(biāo)松開
7.onmousedown 當(dāng)鼠標(biāo)按下鍵
8.onFocus 當(dāng)對(duì)象獲取焦點(diǎn)時(shí)
9.onSelect 當(dāng)對(duì)象的文本被選中時(shí)
10.onChange 當(dāng)對(duì)象的內(nèi)容被改變
11.onBlur 當(dāng)對(duì)象失去焦點(diǎn)
onsubmit=return(ss())表單調(diào)用時(shí)返回的值
直線 border-bottom:1x solid black
虛線 border-bottom:1x dotted black
點(diǎn)劃線 border-bottom:2x dashed black
雙線 border-bottom:5x double black
槽狀 border-bottom:1x groove black
脊?fàn)?border-bottom:1x ridge black
1.邊緣高光glow(color=顏色,strength=亮光大小)
2.水平翻轉(zhuǎn)fliph() 使對(duì)象水平翻轉(zhuǎn)180度
3.垂直翻轉(zhuǎn)flipv() 使對(duì)象垂直翻轉(zhuǎn)180度
4.對(duì)象模糊blur(add=true/false direction=方向 strength=強(qiáng)度)
add指定是否按印象畫派進(jìn)行模糊direction模糊方向strength模糊強(qiáng)度
5.對(duì)象透明alpha(opaction=0-100,finishopacity=0-100,style=0/1/2/3)
opaction對(duì)象整體不透明值finishopacity當(dāng)對(duì)象利用了漸透明時(shí)該項(xiàng)指定結(jié)束透明位置的不透明值style指定透明方式0為整體透明,1為線型透明,2為圓型透明,3為矩形透明
6.去除顏色chroma(color=顏色值)使對(duì)象中顏色與指定顏色相同區(qū)域透明
7.建立陰影dropshadow(color=陰影顏色,offx=水平向左偏離像素,offy=水平向下偏離像素)
8.去色gray()使對(duì)象呈灰度顯示
9.負(fù)片效果invert()使對(duì)象呈底片效果
10.高光light()使對(duì)象呈黑色顯示
11.遮蓋mask(color=顏色)使整個(gè)對(duì)象以指定顏色進(jìn)行蒙板一次
opacity 表透明度水平.0~100,0表全透明,100表完全不透明
finishopacity表想要設(shè)置的漸變透明效果.0~100.
style 表透明區(qū)的形狀.0表統(tǒng)一形狀.1表線形.2表放射形.3表長(zhǎng)方形.
startx.starty表漸變透明效果的開始時(shí)X和Y坐標(biāo).
finishx,finishy漸變透明效果結(jié)束時(shí)x,y 的坐標(biāo).
add有來(lái)確定是否在模糊效果中使有原有目標(biāo).值為0,1.0表"否",1表"是".
direction設(shè)置模糊的方向.0度表垂直向上,45度為一個(gè)單位.默認(rèn)值是向左270度.left,right,down,up.
strength 只能用整數(shù)來(lái)確定.代表有多少個(gè)像素的寬度將受到模糊影響.默認(rèn)是5個(gè).
color要透明的顏色.
offx,offy分別是x,y 方向陰影的偏移量.
positive指投影方式.0表透明像素生成陰影.1表只給出不透明像素生成陰影..
AddAmbient:加入包圍的光源.
AddCone:加入錐形光源.
AddPoint加入點(diǎn)光源
Changcolor:改變光的顏色.
Changstrength:改變光源的強(qiáng)度.
Clear:清除所有的光源.
MoveLight:移動(dòng)光源.
freq是波紋的頻率,在指定在對(duì)象上一區(qū)需要產(chǎn)生多少個(gè)完事的波紋.
lightstrength可對(duì)于波紋增強(qiáng)光影的效果.顯著0~100正整數(shù),正弦波開始位置是0~360度.0表從0度開始,25表從90度開始.
strength表振幅大?。?br />
hand style="cursor:hand"
crosshair style="cursor:crosshair"
text style="cursor:text"
wait style="cursor:wait"
default style="cursor:default"
help style="cursor:help"
e-resize style="cursor:e-resize"
ne-resize style="cursor:ne-resize"
n-resize style="cursor:n-resize"
nw-resize style="cursor:nw-resize"
w-resize style="cursor:w-resize"
s-resize style="cursor:s-resize"
sw-resize style="cursor:sw-resize "
se-resize style="cursor:se-resize"
auto style="cursor:auto"
web交互界面易用性設(shè)計(jì)和驗(yàn)收的指導(dǎo)性原則
隨著Browser/Server模式的日漸流行,很多操作都是在瀏覽器環(huán)境下的網(wǎng)頁(yè)上完成的,并不是只有失效的鏈接和意外的出錯(cuò)才會(huì)使操作者感到煩惱,即便是一次完整的成功操作過(guò)程,也可能因?yàn)椴僮鞯姆睆?fù)性過(guò)高或者使用上的不方便而給操作者帶來(lái)不愉快的體驗(yàn)。
本文試圖闡述WEB交互頁(yè)面設(shè)計(jì)的一些指導(dǎo)性原則,這些原則有利于避免發(fā)生不愉快的操作體驗(yàn)。這些原則是用戶友好性的,是在完成同一種操作要求下,使用戶最感到輕松、簡(jiǎn)單、舒適的WEB交互界面設(shè)計(jì)原則。我們假定我們討論的WEB頁(yè)面都是功能正常的,符合美學(xué)觀點(diǎn)的。需要說(shuō)明我們討論的原則可能會(huì)和設(shè)計(jì)上的美學(xué)觀點(diǎn)以及既有的功能設(shè)計(jì)有所沖突。如果發(fā)生這種情況,基于“實(shí)用的就是美的”觀點(diǎn),我們會(huì)建議您酌情放棄原先的美學(xué)觀點(diǎn)與功能設(shè)計(jì)。
?
1.?輸入控件的自動(dòng)聚焦和可用鍵盤切換輸入焦點(diǎn)?
使用JavaScript實(shí)現(xiàn)頁(yè)面加載完成后立即自動(dòng)聚焦(focus)到第一個(gè)輸入控件??捎肨AB鍵(IE缺省實(shí)現(xiàn))或方向鍵切換聚焦到下一個(gè)輸入控件。?
輸入控件指WEB頁(yè)面表單(
如果實(shí)現(xiàn)了頁(yè)面加載完成即自動(dòng)聚焦到第一個(gè)輸入控件,并且可以鍵盤切換輸入焦點(diǎn)標(biāo)定位操作,那么對(duì)于用戶來(lái)說(shuō)整個(gè)頁(yè)面的輸入操作可能都不需要鼠標(biāo)操作,或次數(shù)較少,這是一種便利。畢竟頻繁的鍵盤鼠標(biāo)切換操作是比較累人的。
對(duì)于有輸入欄的對(duì)話框或網(wǎng)頁(yè),在不干預(yù)的情況下就應(yīng)將當(dāng)前控制焦點(diǎn)定位在待輸入的輸入欄上;如果輸入欄在一般情況下不需要更改其中的內(nèi)容,則應(yīng)直接將焦點(diǎn)定在“確定”按鈕上;在幾個(gè)輸入欄之間應(yīng)支持tab,shift+tab切換操作,“確定”和“取消”應(yīng)該是切換操作的終點(diǎn),與具體所在位置無(wú)關(guān)。
?
2.???可用Enter(或Ctrl+Enter)鍵提交,確保和點(diǎn)擊提交按鈕的效果是相同的?
不要在提交按鈕上加入onClick=”…”這樣的JavaScript代碼。?
用Enter 鍵提交頁(yè)面是原則1的自然延伸,而且這也是瀏覽器所缺省支持的。只所以單獨(dú)列出來(lái)是因?yàn)閷?shí)際上有些設(shè)計(jì)者設(shè)計(jì)的頁(yè)面不能達(dá)到這種效果,結(jié)果導(dǎo)致使用 Enter鍵提交和點(diǎn)擊“確定”按鈕提交帶來(lái)的效果不一樣。大部分情況下是設(shè)計(jì)者在“確定”按鈕上加入了onClik=”…”這樣的代碼,通過(guò)點(diǎn)擊“確定”按鈕后,會(huì)執(zhí)行一段JavaScript代碼,比如對(duì)某些hidden類型的input元素設(shè)值。而使用Enter鍵提交時(shí)就不會(huì)執(zhí)行這段代碼。
正確的做法是把這段代碼移到表單標(biāo)簽中,以onSubmit=”…”屬性引入。
posted on 2008-08-30 03:28 yunye 閱讀(427) 評(píng)論(0) 編輯 收藏 所屬分類: javascript