请保持温和,这是我的第一个问题
我正在构建一个网络浏览器插件来为我的组织自动化一系列流程。我几乎处理了所有事情,但是这个问题已经困扰了我两天了……我认为这很简单。
在我们的ERP的查找字段中,您必须按Shift +右键才能在某些选项之间循环。
我正在尝试触发此事件或以任何可能的方式发送此消息。
Jquery版本2.0.3
Update(Dec 11):因此,根据上述想法,我正在研究修改正在使用的Jquery框架。我已经将本地副本保存为本地替代,并使用了这两个资源来实现。
我正在确定本地替代是否持久(([[Edit:)它们似乎在计算机重新启动后出现,让我们看一下它是否是长期解决方案),但是我能够用console.log记录我的代码并在控制台中看到它。
Update(Dec 12):
function simulateKey (currentTarget, isTrusted, key, code, keyCode, type, modifiers) {
var evtName = (typeof(type) === "string") ? "key" + type : "keydown";
var modifier = (typeof(modifiers) === "object") ? modifier : {};
console.log("In simulate key function");
var event = document.createEvent("HTMLEvents");
event.initEvent(evtName, true, false);
event.keyCode = keyCode;
event.key = key;
event.code = code;
event.isTrusted = isTrusted;
event.Target = currentTarget;
for (var i in modifiers) {
event[i] = modifiers[i];
}
document.dispatchEvent(event);
}
这是我的使用方式(此刻进行了一些硬编码,仅用于测试目的)
function changeLookup(Lookup) {
console.log("Change Lookup");
var event_object = Lookup;
console.log("Key Event Firing");
$("input[data-name='Entity.Customer.Key']").focus();
simulateKey(Lookup, true, "ArrowRight", "ArrowRight", 39, "up", {shiftKey: true });
console.log("Key Event Fired");
}
这里是手动完成的发送给事件处理程序的变量(触发处理程序)
KeyboardEvent {isTrusted: true, key: "ArrowRight", code: "ArrowRight", location: 0, ctrlKey: false, …}
altKey: false
bubbles: true
cancelBubble: false
cancelable: true
charCode: 0
code: "ArrowRight"
composed: true
ctrlKey: false
currentTarget: input#TransactionFormModel549LookupField162683.LookupEditor.FieldChangeTrigger
defaultPrevented: false
detail: 0
eventPhase: 2
isComposing: false
isTrusted: true
key: "ArrowRight"
keyCode: 39
location: 0
metaKey: false
path: (18) [input#TransactionFormModel549LookupField162683.LookupEditor.FieldChangeTrigger, div.LookupWrapper.Focus, span.LookupFieldValueBlock.FieldValueBlock, div#TransactionFormModel549LookupField162683_d.field.LookupField.field.RequiredField, fieldset#TransactionFormModel549FieldSet162572_d.FieldSet_1.FieldSet., div.PanelContent.PanelContentStyle, div#TransactionFormModel549Panel162561_d.Sundry.Panel.ui-widget., div.PanelContent.PanelContentStyle, div#TransactionFormModel549Panel162554_d.ContentPanel.Panel.ui-widget.ScrollPane, div.ContentPanelWrapper.TransactionFormContentPanelWrapper, div.TransactionFormWrapper.NotTabView, form#TransactionFormModel549.TransactionForm, div#tabs-3.ui-tabs-panel.ui-widget-content.ui-corner-bottom, div#tabs.mainContent.ui-tabs.ui-widget.ui-widget-content.ui-corner-all, body.Lessor.WorkAreaBody, html..js.flexbox.flexboxlegacy.canvas.canvastext.webgl.no-touch.geolocation.postmessage.websqldatab…, document, Window]
repeat: false
returnValue: true
shiftKey: true
sourceCapabilities: InputDeviceCapabilities {firesTouchEvents: false}
srcElement: input#TransactionFormModel549LookupField162683.LookupEditor.FieldChangeTrigger
target: input#TransactionFormModel549LookupField162683.LookupEditor.FieldChangeTrigger
timeStamp: 568807.295000006
type: "keyup"
view: Window {parent: Window, postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, …}
which: 39
__proto__: KeyboardEvent
DOM_KEY_LOCATION_LEFT: 1
DOM_KEY_LOCATION_NUMPAD: 3
DOM_KEY_LOCATION_RIGHT: 2
DOM_KEY_LOCATION_STANDARD: 0
altKey: (...)
bubbles: (...)
cancelBubble: (...)
cancelable: (...)
charCode: (...)
code: (...)
composed: (...)
ctrlKey: (...)
currentTarget: (...)
defaultPrevented: (...)
detail: (...)
eventPhase: (...)
getModifierState: ƒ getModifierState()
initKeyboardEvent: ƒ initKeyboardEvent()
isComposing: (...)
key: (...)
keyCode: (...)
location: (...)
metaKey: (...)
path: (...)
repeat: (...)
returnValue: (...)
shiftKey: (...)
sourceCapabilities: (...)
srcElement: (...)
target: (...)
timeStamp: (...)
type: (...)
view: (...)
which: (...)
constructor: ƒ KeyboardEvent()
Symbol(Symbol.toStringTag): "KeyboardEvent"
get altKey: ƒ altKey()
get charCode: ƒ charCode()
get code: ƒ code()
get ctrlKey: ƒ ctrlKey()
get isComposing: ƒ isComposing()
get key: ƒ key()
get keyCode: ƒ keyCode()
get location: ƒ location()
get metaKey: ƒ metaKey()
get repeat: ƒ repeat()
get shiftKey: ƒ shiftKey()
__proto__: UIEvent
这里是模拟时发送到事件处理程序的变量(无作用)
Event {isTrusted: false, keyCode: 39, key: "ArrowRight", code: "ArrowRight", Target: init(2), …}
Target: init(2) [input#TransactionFormModel585LookupField162683.LookupEditor.FieldChangeTrigger, input.LookupFieldValue.FieldChangeTrigger., prevObject: init(1), context: document, selector: "input[data-name='Entity.Customer.Key']"]
bubbles: true
cancelBubble: false
cancelable: false
code: "ArrowRight"
composed: false
currentTarget: document
defaultPrevented: false
eventPhase: 2
isTrusted: false
key: "ArrowRight"
keyCode: 39
path: (2) [document, Window]
returnValue: true
shiftKey: true
srcElement: document
target: document
timeStamp: 60192.974999998114
type: "keyup"
__proto__: Event
我已经查看或尝试了以下解决方案
[请放心,这是我的第一个问题,我正在构建一个Web浏览器插件来为我的组织自动化一系列流程。我几乎处理了所有事情,但是这个问题我...