にJavaScriptを使用してキー入力をシミュレートするために、私はこのトピックに関する多くの情報を発見したが、それらのどれも(もう)動作するようには思えないどのようにクロム
は、キー(上下/プレスをシミュレートすることです/クロール59のイベント(私は本当に他のブラウザを気にしない)。イベント自体をシミュレートすることは問題ではありませんが、問題は、下位互換性があり、charCode/keyCode値を含む解決策が見つからないことです。それが私に任せられていれば、私はキー/コードをチェックするために他のアプリケーションのコードを更新するでしょうが、残念ながらそれは私の責任ではありません。
var evt = new KeyboardEvent(type, {code: options.charCode, key: options.keyCode, keyCode: options.keyCode, charCode: options.keyCode, which: options.which});
element.dispatchEvent(evt);
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEventによれば、これは仕事と作成イベントを設定したkeyCode/charCodeは/で、それが動作しないはずです::私がこれまで試してみました何
私のコード(
new KeyboardEvent("keypress", {code: 123, key: 123, keyCode: 123, charCode: 123, which: 123});
出力:
01私は引用符なしで、代わりに数字の文字)を試してみましたKeyboardEvent {isTrusted: false, key: "123", code: "123", location: 0, ctrlKey: false…}
altKey:false
bubbles:false
cancelBubble:false
cancelable:false
charCode:0
code:"123"
composed:false
ctrlKey:false
currentTarget:null
defaultPrevented:false
detail:0
eventPhase:0
isComposing:false
isTrusted:false
key:"123"
keyCode:0
location:0
metaKey:false
path:Array(0)
repeat:false
returnValue:true
shiftKey:false
sourceCapabilities:null
srcElement:null
target:null
timeStamp:2469092.6000000006
type:"keypress"
view:null
which:0
__proto__:KeyboardEvent
私は仕様を見て、keyCode/charCode/whichプロパティがこれ以上存在しないことに気付きました。これは標準から削除されたと信じています。より:https://w3c.github.io/uievents/#keyboardevent
これが働い明確ではない、私は非推奨の機能initKeyboardEventに見て始めたこの試みた:これはすでに有望に見えたが、私はイベントを送出したとき、これは
var evt = document.createEvent("KeyboardEvent");
//Chrome hack
Object.defineProperty(evt, 'keyCode', {
get : function(){
return this.keyCodeVal;
}
});
Object.defineProperty(evt, 'which', {
get : function(){
return this.keyCodeVal
}
});
Object.defineProperty(evt, 'charCode', {
get : function(){
return this.charCodeVal
}
});
//initKeyBoardEvent seems to have different parameters in chrome according to MDN KeyboardEvent(sorry, can't post more than 2 links), but that did not work either
evt.initKeyboardEvent("keypress",
true,//bubbles
true,//cancelable
window,
false,//ctrlKey,
false,//altKey,
false,//shiftKey,
false,//metaKey,
123,//keyCode,
123//charCode
);
evt.charCodeVal = 123;
evt.keyCodeVal = 123;
をハンドラで見ることができるイベント:
KeyboardEvent
altKey:false
bubbles:true
cancelBubble:false
cancelable:true
charCode:0
code:""
composed:false
ctrlKey:false
currentTarget:input#iceform:username.iceInpTxt.bookLoginTextbox
defaultPrevented:false
detail:0
eventPhase:2
isTrusted:false
key:""
keyCode:0
location:0
metaKey:true
path:Array[16]
repeat:false
returnValue:true
shiftKey:true
sourceCapabilities:null
srcElement:input#iceform:username.iceInpTxt.bookLoginTextbox
target:input#iceform:username.iceInpTxt.bookLoginTextbox
timeStamp:9932.905000000002
type:"keypress"
view:Window
which:0
__proto__:KeyboardEvent
これは私がついに諦めて助けを求めることになったときです。下位互換性のある方法でこれらのイベントを適切にシミュレートできる方法はありますか?
は私が最終的に問題を考え出したのjQuery OR似THINGS
あなたは悲鳴を上げる**あなたに尋ねないでください - **まだjQueryで質問にタグを付けました:p –
このような状況では、時々異なる方法があります。あなたの達成しようとしていることは何ですか? –
Lol、あなたは間違ったタグ付けを見ていない...実際のユーザーがページ内の要素をクリックするのをシミュレートするキーイベントをシミュレートしようとしています –