初探IE和FF兼容性

第一次遇到IE和FF得兼容性问题,是一个用JS写的菜单(onmouseover时显示,onmouseout时消失),在IE下正常显示,FF中没有任何反应。

初步研究,发现FF下不识别window.event对象,因为window.event属于IE本身的对象资源。FF中相对应的对象需要调用时作为参数传入。例如:

  1. function showmenu()  
  2. {  
  3.    window.event;  
  4. }  
  5. οnmοuseοver="showmenu()"  
function showmenu() { window.event; } οnmοuseοver="showmenu()"

就需要修改为:

  1. function showmenu(e)  
  2. {  
  3.     var evt;  
  4.     if(window.event)  
  5.     {  
  6.         //code for IE  
  7.         evt = window.event;  
  8.     }  
  9.     else  
  10.     {  
  11.         //code for firefox  
  12.         evt = e;  
  13.     }  
  14. }  
  15. onmouseover("showmenu(event)")  
function showmenu(e) { var evt; if(window.event) { //code for IE evt = window.event; } else { //code for firefox evt = e; } } onmouseover("showmenu(event)")

但是改完以后发现依然不能显示。。。进一步调查,发现html头有这样一行:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
如果去掉这行,则代码可以再FF中正常运行。 这说明现在的代码中有不符合XHTML 1.0规范的代码。

于是用alert调试。。。非常麻烦。突然想起来firebug。果真是个好东西,调试JS无敌啊。安上以后迅速发现是有这样一行不合规范

menuDiv.innerHTML = vMnuCode;

其中menuDiv是函数外的一个div元素的id。firebug提示要该变量超出作用范围,建议使用符合W3C规范的document.getelemntbyid()。

这回应该可以了。。。不过格式不知道还有没有问题。该菜单方法中的好多位置,大小的属性在IE和FF中也有差别。

暂时解决到这里,记录一下。呵呵。

转载于:https://www.cnblogs.com/wolfant/archive/2009/08/18/1557822.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值