??xml version="1.0" encoding="utf-8" standalone="yes"?>
1. document.form.item 问题
(1)现有问题Q?BR> 现有代码中存在许?document.formName.item("itemName") q样的语句,不能?MF 下运?BR> (2)解决ҎQ?BR> 改用 document.formName.elements["elementName"]
(3)其它
参见 2
2. 集合cd象问?BR> (1)现有问题Q?BR> 现有代码中许多集合类对象取用时?()QIE 能接受,MF 不能?BR> (2)解决ҎQ?BR> 改用 [] 作ؓ下标q算。如Qdocument.forms("formName") 改ؓ document.forms["formName"]?BR> 又如Qdocument.getElementsByName("inputName")(1) 改ؓ document.getElementsByName("inputName")[1]
(3)其它
3. window.event
(1)现有问题Q?BR> 使用 window.event 无法?MF 上运?BR> (2)解决ҎQ?BR> MF ?event 只能在事件发生的现场使用Q此问题暂无法解冟뀂可以这样变通:
原代?可在IE中运?Q?BR> <input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit()"/>
...
<script language="javascript">
function gotoSubmit() {
...
alert(window.event); // use window.event
...
}
</script>
C?可在IE和MF中运?Q?BR> <input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit(event)"/>
...
<script language="javascript">
function gotoSubmit(evt) {
evt = evt ? evt : (window.event ? window.event : null);
...
alert(evt); // use evt
...
}
</script>
此外Q如果新代码中第一行不改,与老代码一L??gotoSubmit 调用没有l参?Q则仍然只能在IE中运行,但不会出错。所以,q种Ҏ tpl 部分仍与老代码兼宏V?/P>
4. HTML 对象?id 作ؓ对象名的问题
(1)现有问题
?IE 中,HTML 对象?ID 可以作ؓ document 的下属对象变量名直接使用。在 MF 中不能?BR> (2)解决Ҏ
?getElementById("idName") 代替 idName 作ؓ对象变量使用?/P>
5. 用idName字符串取得对象的问题
(1)现有问题
在IE中,利用 eval(idName) 可以取得 id ?idName ?HTML 对象Q在MF 中不能?BR> (2)解决Ҏ
?getElementById(idName) 代替 eval(idName)?/P>
6. 变量名与?HTML 对象 id 相同的问?BR> (1)现有问题
?MF 中,因ؓ对象 id 不作?HTML 对象的名Uͼ所以可以用与 HTML 对象 id 相同的变量名QIE 中不能?BR> (2)解决Ҏ
在声明变量时Q一律加?var Q以避免歧义Q这样在 IE 中亦可正常运行?BR> 此外Q最好不要取?HTML 对象 id 相同的变量名Q以减少错误?BR> (3)其它
参见 问题4
7. event.x ?event.y 问题
(1)现有问题
在IE 中,event 对象?x, y 属性,MF中没有?BR> (2)解决Ҏ
在MF中,与event.x {效的是 event.pageX。但event.pageX IE中没有?BR> 故采?event.clientX 代替 event.x。在IE 中也有这个变量?BR> event.clientX ?event.pageX 有微妙的差别Q当整个面有滚动条的时候)Q不q大多数时候是{效的?/P>
如果要完全一P可以E麻烦些Q?BR> mX = event.x ? event.x : event.pageX;
然后?mX 代替 event.x
(3)其它
event.layerX ?IE ?MF 中都有,具体意义有无差别未试验?/P>
8. 关于frame
(1)现有问题
?IE?可以用window.testFrame取得该frameQmf中不?BR> (2)解决Ҏ
在frame的用方面mf和ie的最主要的区别是Q?BR>如果在frame标签中书写了以下属性:
<frame src="xx.htm" id="frameId" name="frameName" />
那么ie可以通过id或者name讉Kq个frame对应的window对象
而mf只可以通过name来访问这个frame对应的window对象
例如如果上述frame标签写在最上层的window里面的htm里面Q那么可以这栯?BR>ieQ?window.top.frameId或者window.top.frameName来访问这个window对象
mfQ?只能q样window.top.frameName来访问这个window对象
另外Q在mf和ie中都可以使用window.top.document.getElementById("frameId")来访问frame标签
q且可以通过window.top.document.getElementById("testFrame").src = 'xx.htm'来切换frame的内?BR>也都可以通过window.top.frameName.location = 'xx.htm'来切换frame的内?BR>关于frame和window的描q可以参见bbs的‘window与frame’文?BR>以及/test/js/test_frame/目录下面的测?BR>----adun 2004.12.09修改
9. 在mf中,自己定义的属性必getAttribute()取得
10.在mf中没?nbsp; parentElement parement.children 而用
parentNode parentNode.childNodes
childNodes的下标的含义在IE和MF中不同,MF使用DOM规范QchildNodes中会插入I白文本节点?BR> 一般可以通过node.getElementsByTagName()来回避这个问题?BR> 当html中节点缺失时QIE和MF对parentNode的解释不同,例如
<form>
<table>
<input/>
</table>
</form>
MF中input.parentNode的gؓform, 而IE中input.parentNode的gؓI?/P>
MF中节Ҏ有removeNodeҎQ必M用如下方?node.parentNode.removeChild(node)
11.const 问题
(1)现有问题:
?IE 中不能?const 关键字。如 const constVar = 32; 在IE中这是语法错误?BR> (2)解决Ҏ:
不?const Q以 var 代替?/P>
12. body 对象
MF的body在body标签没有被浏览器完全d之前存在,而IE则必dbody完全被读入之后才存在
13. url encoding
在js中如果书写urlq接写&不要?amp;amp;例如var url = 'xx.jsp?objectName=xx&objectEvent=xxx';
frm.action = url那么很有可能url不会被正常显CZ至于参数没有正确的传到服务器
一般会服务器报错参数没有找?BR>当然如果是在tpl中例外,因ؓtpl中符合xml规范Q要?amp;书写?amp;amp;
一般MF无法识别js中的&
14. nodeName ?tagName 问题
(1)现有问题Q?BR> 在MF中,所有节点均?nodeName |?textNode 没有 tagName 倹{在 IE 中,nodeName 的用好?BR> 有问题(具体情况没有试Q但我的IE已经M好几ơ)?BR> (2)解决ҎQ?BR> 使用 tagNameQ但应检其是否为空?/P>
15. 元素属?BR> IE?input.type属性ؓ只读Q但是MF下可以修?/P>
16. document.getElementsByName() ?document.all[name] 的问?BR> (1)现有问题Q?BR> ?IE 中,getElementsByName()、document.all[name] 均不能用来取?div 元素Q是否还有其它不能取的元素还不知道)?/P>
17. 调用子框架或者其它框架中的元素的问题
(1)?IE 中,可以用如下方法来取得子元素中的?BR> document.getElementById("frameName").(document .)elementName或?BR> window.frames["frameName"].elementName
(2)在Firefox中则需要改成如下Ş式来执行Q与IE兼容Q:
window.frames["frameName"].contentWindow.document.elementName
window.frames["frameName"].document.elementName