当处理程序访问 originalEvent 时触发事件(例如通过 jQuery)

Trigger event (e.g. via jQuery) when handler accesses originalEvent

我正在尝试在小书签的 input 字段(该字段是 OpenGrok 的搜索字段)上触发 propertychange 事件。

该字段的处理程序定义如下(这是去最小化的 OpenGrok 源):

function(i) {
  var h = true;
  if (i.type == "propertychange") {
    h = i.originalEvent.propertyName.toLowerCase() == "value"
  }
  if (h) {
    if (d(this).data("timeout")) {
      clearTimeout(d(this).data("timeout"))
    }
    d(this).data("timeout", setTimeout(function() {
      f._applySearchTermFilter()
    }, f.config.searchTimeout))
  }
}

我试过了(是的,文本字段既没有名称也没有id,只是一个占位符属性...)

$('input[placeholder="Click here to select project(s)"]')
   .focus()
   .val('MY-SEARCH-TEXT')
   .trigger("propertychange")

但是失败了,因为处理程序试图访问 event.originalEvent,jQuery 没有设置。 我能以某种方式伪造一个具有此 属性 的事件吗?

也许可以不用事件直接调用 _applySearchTermFilter(),但我也不知道该怎么做,因为所有这些函数都在匿名 IIFE 中(并且 f=this). 这样的功能是通过window以任何方式公开的吗?

找到了,只要知道jQuery,其实很简单:

$('input[placeholder="Click here to select project(s)"]')
    .focus()
    .val('MY-SEARCH-TEXT')
    .trigger($.Event('propertychange', {originalEvent: {propertyName: "value"}}));