Internet Explorer JavaScript中的技巧

Tricks in Internet Explorer JavaScript

本文关键字:Explorer JavaScript Internet      更新时间:2023-09-26

我在这个事件库中找到了一个IE修复,但是除了一个注释之外没有任何评论:' IE fix';

这段代码是做什么的?哪个ie需要这个修复?

 if (elem.setInterval && ( elem != window && !elem.frameElement ) ) {
  elem = window;
}
http://javascript.ru/files/event/event.js

好吧,我会解释这是怎么回事——但它有点不稳定。

  // This is a cheap duck test.  normally, only a "top level" object would contain
  // a setInterval property/method
  // By top level, that pretty much means a window, a frame, or an iframe.
  // So this is a lame/broken test for that.
  if (elem.setInterval
  && 
  // Then we check to see if we have a window or a frame.
  ( elem != window && !elem.frameElement ) ) {
    // If we don't have either, assume that we were passed something totally bogus
    // and assign this to the window value.
    elem = window;
  }

在没有阅读API的情况下,我查看了代码。更好的写法应该是:

add: function(elem, type, handler) {
  if (elem === undefined) {
    elem = window;
  }

或者我这样写:

add: function(elem, type, handler) {
  // MUCH better test is shown here:
  // http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object
  if (elem === undefined) {
    throw "Event.Add warning. Must pass an element to bind the event to."
  }