在编写Javascript时如何处理IE

时间:2011-08-11 07:30:30

标签: javascript internet-explorer

这是一个由两部分组成的问题。

为什么IE在处理Javascript时需要这么多特殊处理?除了Firebug lite之外,你有没有任何技巧,资源和/或系统让你的js兼容IE?

4 个答案:

答案 0 :(得分:2)

使用像J-query这样的标准化库,这样你就不必在javascript端自己跳过所有的箍!

雅虎用户界面(YUI)也可以让网站在不同的浏览器上看起来非常相似。他们的Grids图书馆工作得很好。

答案 1 :(得分:2)

你能详细说明一下你所指的是什么吗?

其核心的JavaScript在过去10年中主要是相同的。如果您担心旧的IE版本(IE6-7),您可以保持冷静。 IE6是在JavaScript 1.5支持下发布的,因此所有JS代码都可以正常运行。 Mozilla在their MDC site有一个非常好的JS ref文档。在每个页面的底部,通常会列出支持该特定功能的每个浏览器的版本。

然而,浏览器之间的区别通常在于DOM实现或事件处理。在属性可能有不同的名称的情况下,这些属性主要与元素/滚动位置有关。

要查找要使用的正确属性,请检查该浏览器中的开发人员工具(IE中的Firebug,Webkit中的开发人员工具或IE中的开发人员工具栏)以查找您要查找的内容。如果您不确定使用debugger;关键字在代码中设置JavaScript断点,或使用console.log()向控制台发送内容。在IE开发者工具栏中可以从IE8 +(我想)获得。

大多数问题已经在jQuery,MonoTools等主要JavaScript框架中得到解决。

答案 2 :(得分:2)

想到的两个主要的“特殊待遇”事情是:

  1. 事件。包括事件处理程序的赋值,事件对象可用于处理函数的方式,以及事件对象的一些属性。有关详细信息,请参阅此页面:http://www.quirksmode.org/js/introevents.html
  2. Ajax的。使用XMLHttpRequestActiveXObject("Microsoft.XMLHTTP")
  3. 其他一切都应该没问题。

    你可以自己编写一些(相对)简单的辅助函数来解决这些问题,或者使用像jQuery这样的库来规范差异。如果您自己编写,请务必测试功能支持而不是尝试测试哪个浏览器 - 请参阅此(长篇)文章以获得解释:http://jibbering.com/faq/notes/detect-browser/(我确定有更短的解释,但我不能打扰找到一个。)

答案 3 :(得分:1)

如果您在页面中使用jquery,那么您可以使用此代码检查ie

if ($.browser.msie && $.browser.version == '6.0') {
     //do IE specific code
}

此代码仅在用户浏览器为IE 6.0或您保留此条件时运行