今天修改了一个自定义控件,可以兼容FireFox了!
开发Web程序的时候,我一贯只是使用IE测试,引文一般都是Intranet应用,所以要求客户也是使用IE来浏览。然而现在Firefox越来越火了,看来至少应该支持Firefox了。今天我动手改造一个日期控件。首先在Firefox中调试了一下Js脚本,发现Firefox的错误控制台也不是那么管用,我的一个事件脚本根本没有执行,但是也看不到错误记录!没办法祭起Alert大法,发现Firefox还是支持Img的onmousedown事件的,看来还是具体的脚本有不兼容的地方。到网上搜了一下,发现这方面的文章还真不少啊,其中这篇文章讲得很清楚,对照了一下,还好我写脚本的时候都尽量使用W3C的标准来写得,所以只发现是使用自定义属性的问题。例如给img添加了一个initialed='0'属性:
<img id='cal1_btn' initialed='0' src='images/calendar.gif'>
这个自定义属性在IE中可以直接引用访问
var btn=document.getElementById("cal1_btn");
if(btn.initialed=='0')
{
btn.initialed='1';
...do some other things
}
然而在Firefox中是不支持这样使用的,必须改造成这样:
if(btn.initialed=='0')
{
btn.initialed='1';
...do some other things
}
var btn=document.getElementById("cal1_btn");
if(btn.getAttribute('initialed')=='0')
{
btn.setAttribute('initialed','1');
do some other things
}
好的经过简单修改之后,基本上控件可以在Firefox中使用了。可是还有在手动输入的时候翻译的结果不对,再次祭起Alert大法,这次发现原来是Date对象的getYear方法的问题,在IE中方法返回和FireFox中不一致,仔细看看文档,原来推荐使用getFullYear方法!唉,谁让咱没仔细看呢,改正后,问题完全解决了。if(btn.getAttribute('initialed')=='0')
{
btn.setAttribute('initialed','1');
do some other things
}