作为网页、尤其是代码编写者,关于IE和Firefox的需要知道的 Unknown 2009/01/31

| |

http://spyrise.org/blog/category/iPod/ 里,我编写了一个用Javascript来生成iPod所用的vCard文件。

最近,我决定重写一下代码,优化一下。因为我必须做到IE和Firefox效果相同,所以调试了好久。无意中,我发现了两个关于IE奇怪的现象。

1) 如果你使用<textarea id="inputArea"> </textarea>。当你复制一大段文字进入这个TEXTAREA输入框。然后用alert(document.getElementById("inputArea").value.length)来获取输入文字的字数时,你会发现IE报告的字数会比Firefox多一些。

什么原因呢?原因是IE关于换行符的解释为\r\n,而firefox是\n,少了一个\r。每一个换行符,就会差一个字。而实际情况中,会有很多段落,自然两者的长度会不一样了:IE会比Firefox多一些字节。我们可以使用以下代码来消除IE中的\r。

if(navigator.appName.indexOf('Microsoft Internet Explorer')!=-1) obj=obj.replace(/\r/g,'');

在进行了以上去除\r的操作后,两者的字符串长度就相同了。

2) 如果你使用 inputArea=document.getElementById("inputArea").value 的Javascript代码时,Firefox不会告诉你这个是错误,但IE会奇怪地报告:该对象不支持此方法或属性。原因是变量名与Id名相同了。虽然我认为,前者是变量,后者是DOM对象,根本就是两回事,为何不可这么写,但事实就是这样。如果你在最前面加上var,则可以:var inputArea=document.getElementById("inputArea").value。但是即使这么写,后来我发现我陷入了混乱,而且不明白为何会这样。最后我只好将原Id名从inputArea改名至v_inputArea来解决这个问题。

请给这篇日志评个分吧~!

本文评分: 5.7/10 (10 votes)    提示:您还未对本文评分,您可以进行评分并发表您的意见!

加入收藏!

Tags: , , , ,
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [注册]