当处理程序访问 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"}}));
我正在尝试在小书签的 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"}}));