【问题标题】:Javascript - IE automation - event is undefined errorJavascript - IE 自动化 - 事件未定义错误
【发布时间】:2019-03-14 08:15:20
【问题描述】:

我试图在 Internet Explorer 中的某个元素上触发一系列事件,但下面的代码给了我一个“事件未定义”。有什么想法可以解决这个问题吗?对象不支持createEvent,因此无法使用。

function categoryClick() {
  var events = ["mousemove", "mouseover", "focus", "mousedown", "mouseup", "click"];
  var combobox = document.getElementById("category");
  var a = combobox.childNodes;
  var target = a[0].childNodes[0];

    for (var i = 0; i < events.length; i++) {
    var eventObject = new Event(events[i], {
      "bubbles": true,
      "cancelable": false
    });

    target.dispatchEvent(eventObject);
  }
}

【问题讨论】:

  • event = event || window.event; 这不明白为什么会出现......
  • 对于event = event || window.event,你需要event作为函数的形式参数。
  • 事件 = 事件 || window.event 对代码没有影响。结果仍然是 Event 没有定义。怎么可能在代码中定义呢?
  • 你看过骗子了吗?

标签: javascript events custom-events


【解决方案1】:

查看代码中的 cmets。

function categoryClick() {
  var events = ["mousemove", "mouseover", "focus", "mousedown", "mouseup", "click"];
  var combobox = document.getElementById("category");
  var a = combobox.childNodes;
  var target = a[0].childNodes[0];

    for (var i = 0; i < events.length; i++) {
    if (typeof(Event) === 'function') { // just as you did
        var eventObject = new Event(events[i], {
          "bubbles": true,
          "cancelable": false
        })
    } else { // fallback for IE
        var eventObject = document.createEvent('Event');
        eventObject.initEvent(events[i], true, false);
    }

    target.dispatchEvent(eventObject);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-06
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2013-02-27
    • 2014-11-19
    • 2013-12-29
    相关资源
    最近更新 更多