首頁  >  文章  >  web前端  >  如何使用 JavaScript 在 Safari 中可靠地建立鍵盤事件?

如何使用 JavaScript 在 Safari 中可靠地建立鍵盤事件?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-13 08:37:02889瀏覽

How to Reliably Create Keyboard Events in Safari using JavaScript?

使用JavaScript 在Safari 中建立鍵盤事件

使用JavaScript 在Safari 中模擬鍵盤事件可能具有挑戰性,正如您嘗試使用文件所證明的那樣.createEvent。該問題源自於 keyCode 屬性的不一致行為,儘管您努力將其設為 115,但它仍被初始化為 0。

要解決此問題,我們建議使用 DOM 鍵盤事件等級 3 填充,它增強了 JavaScript 的事件模型來支援現代瀏覽器並為遺留屬性提供向後相容性。

使用這個polyfill,您可以建立鍵盤事件,例如so:

element.addEventListener("keydown", function(e){ console.log(e.key, e.char, e.keyCode) })

var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true});
element.dispatchEvent(e);

//If you need legacy property "keyCode"
// Note: In some browsers you can't overwrite "keyCode" property. (At least in Safari)
delete e.keyCode;
Object.defineProperty(e, "keyCode", {"value" : 666})

polyfill 支援keyCode、charCode 等遺留屬性,讓你直接指定這些屬性:

var e = new KeyboardEvent("keydown", {
    bubbles : true,
    cancelable : true,
    char : "Q",
    key : "q",
    shiftKey : true,
    keyCode : 81
});

此外,你還可以找到一個跨瀏覽器initKeyboardEvent 版本在單獨的要點中。

透過利用這些技術,您可以在 Safari 中可靠地建立和調度鍵盤事件,確保不同瀏覽器之間的行為一致。

以上是如何使用 JavaScript 在 Safari 中可靠地建立鍵盤事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn