尝试发送组合键(向右移动Shift或触发事件JQ 2.0.3

问题描述 投票:1回答:1

请保持温和,这是我的第一个问题

我正在构建一个网络浏览器插件来为我的组织自动化一系列流程。我几乎处理了所有事情,但是这个问题已经困扰了我两天了……我认为这很简单。

在我们的ERP的查找字段中,您必须按Shift +右键才能在某些选项之间循环。

我正在尝试触发此事件或以任何可能的方式发送此消息。

Jquery版本2.0.3

  • 所需的事件仅在按键时触发
  • 模拟输入时未触发必需的事件
  • 我怀疑它需要针对输入,或者可能与不被信任/被模拟有关
  • 在我看来,当我使用浏览器扩展程序时,也许这是我可以模拟的东西?我不知道这是否是一个好方法……我想知道扩展程序在这里可以做什么,而页面上的普通JS或JQ无法做到。
  • Update(Dec 11):因此,根据上述想法,我正在研究修改正在使用的Jquery框架。我已经将本地副本保存为本地替代,并使用了这两个资源来实现。

  • Override Javascript file in chrome

  • https://www.ghacks.net/2018/02/27/make-permanent-changes-to-web-pages-with-chromes-overrides-dev-tool/

  • 我正在确定本地替代是否持久(([[Edit:)它们似乎在计算机重新启动后出现,让我们看一下它是否是长期解决方案),但是我能够用console.log记录我的代码并在控制台中看到它。

  • 下一步将修改处理程序以执行我需要的操作。和/或将我要输入的信息输入系统。
  • Update(Dec 12):

  • 可能不需要使用此答案覆盖整个文件how to override a javascript function
这里是我的函数,它触发了从here修改的事件处理程序(无结果)>

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浏览器插件来为我的组织自动化一系列流程。我几乎处理了所有事情,但是这个问题我...

javascript jquery automation
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.