初探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. onmouseover="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)")  

但是改完以后发现依然不能显示。。。进一步调查,发现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中也有差别。

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

posted @ 2009-08-18 01:28  D K  阅读(250)  评论(0编辑  收藏  举报