Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/events/test/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 18 kB image not shown  

Quelle  test_dom_keyboard_event.html

  Sprache: HTML
 

 products/Sources/formale Sprachen/C/Firefox/dom/events/test/test_dom_keyboard_event.html


<!DOCTYPE HTML>
<html>
<head>
  <title>Test for DOM KeyboardEvent</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <script src="/tests/SimpleTest/EventUtils.js"></script>
  <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<p id="display"></p>
<p><input type="text" id="input"></p>
<p><input type="text" id="input_readonly" readonly></p>
<p><textarea id="textarea"></textarea></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script>

SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(runTests, window);

function testInitializingUntrustedEvent() {
  const kTests = [
    [
      "KeyboardEvent",
      {
        type: "keydown",
        bubbles: true,
        cancelable: true,
        view: null,
        key: "",
        location: 0,
        ctrlKey: false,
        altKey: false,
        shiftKey: false,
        metaKey: false,
      },
    ],
    [
      "keyboardevent",
      {
        type: "keyup",
        bubbles: false,
        cancelable: true,
        view: window,
        key: "Unidentified",
        location: 1,
        ctrlKey: true,
        altKey: false,
        shiftKey: false,
        metaKey: false,
      },
    ],
    [
      "Keyboardevent",
      {
        type: "keypress",
        bubbles: true,
        cancelable: false,
        view: null,
        key: "FooBar",
        location: 2,
        ctrlKey: false,
        altKey: true,
        shiftKey: false,
        metaKey: false,
      },
    ],
    [
      "keyboardevent",
      {
        type: "foo",
        bubbles: true,
        cancelable: true,
        view: null,
        key: "a",
        location: 0,
        ctrlKey: false,
        altKey: false,
        shiftKey: false,
        metaKey: true,
      },
    ],
    [
      "KeyBoardEvent",
      {
        type: "",
        bubbles: false,
        cancelable: false,
        view: null,
        key: "3",
        location: 0,
        ctrlKey: true,
        altKey: true,
        shiftKey: true,
        metaKey: true,
      },
    ],
    [
      "keyboardevEnt",
      {
        type: "",
        bubbles: false,
        cancelable: false,
        view: null,
        key: "3",
        location: 6,
        ctrlKey: false,
        altKey: false,
        shiftKey: true,
        metaKey: false,
      },
    ],
    [
      "KeyboaRdevent",
      {
        type: "",
        bubbles: false,
        cancelable: false,
        view: null,
        key: "",
        location: 4,
        ctrlKey: false,
        altKey: true,
        shiftKey: false,
        metaKey: false,
      },
    ],
  ];

  const kOtherModifierName = [
    "CapsLock""NumLock""ScrollLock""Symbol""SymbolLock""Fn""FnLock""AltGraph"
  ];

  const kInvalidModifierName = [
    "shift""control""alt""meta""capslock""numlock""scrolllock",
    "symbollock""fn""OS""altgraph""Invalid""Shift Control",
    "Win""Scroll"
  ];

  kTests.forEach(([createEventArg, kTest], i) => {
    var description = "testInitializingUntrustedEvent, Index: " + i + ", ";
    var e = document.createEvent(createEventArg);
    e.initKeyboardEvent(
      kTest.type,
      kTest.bubbles,
      kTest.cancelable,
      kTest.view,
      kTest.key,
      kTest.location,
      kTest.ctrlKey,
      kTest.altKey,
      kTest.shiftKey,
      kTest.metaKey
    );
    is(
      e.toString(),
      "[object KeyboardEvent]",
      description + 'class string should be "KeyboardEvent"'
    );

    for (var attr in kTest) {
      is(e[attr], kTest[attr], description + attr + " returns wrong value");
    }
    is(e.isTrusted, false, description + "isTrusted returns wrong value");

    // getModifierState() tests
    is(e.getModifierState("Shift"), kTest.shiftKey,
       description + "getModifierState(\"Shift\") returns wrong value");
    is(e.getModifierState("Control"), kTest.ctrlKey,
       description + "getModifierState(\"Control\") returns wrong value");
    is(e.getModifierState("Alt"), kTest.altKey,
       description + "getModifierState(\"Alt\") returns wrong value");
    is(e.getModifierState("Meta"), kTest.metaKey,
       description + "getModifierState(\"Meta\") returns wrong value");

    for (var j = 0; j < kOtherModifierName.length; j++) {
      ok(!e.getModifierState(kOtherModifierName[j]),
         description + "getModifierState(\"" + kOtherModifierName[j] + "\") returns wrong value");
    }
    for (var k = 0; k < kInvalidModifierName.length; k++) {
      ok(!e.getModifierState(kInvalidModifierName[k]),
         description + "getModifierState(\"" + kInvalidModifierName[k] + "\") returns wrong value");
    }
  });
}

function testSynthesizedKeyLocation()
{
  const kTests = [
    { key: "a", isModifier: false, isPrintable: true,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_A,
               location: KeyboardEvent.DOM_KEY_LOCATION_STANDARD },
    },
    { key: "KEY_Shift", isModifier: true, isPrintable: false,
      event: { shiftKey: true, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_SHIFT,
               location: KeyboardEvent.DOM_KEY_LOCATION_LEFT },
    },
    { key: "KEY_Shift", isModifier: true, isPrintable: false,
      event: { shiftKey: true, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_SHIFT,
               location: KeyboardEvent.DOM_KEY_LOCATION_RIGHT },
    },
    { key: "KEY_Control", isModifier: true, isPrintable: false,
      event: { shiftKey: false, ctrlKey: true, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_CONTROL,
               location: KeyboardEvent.DOM_KEY_LOCATION_LEFT },
    },
    { key: "KEY_Control", isModifier: true, isPrintable: false,
      event: { shiftKey: false, ctrlKey: true, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_CONTROL,
               location: KeyboardEvent.DOM_KEY_LOCATION_RIGHT },
    },
/* XXX Alt key activates menubar even if we consume the key events.
    { key: "KEY_Alt", isModifier: true, isPrintable: false,
      event: { shiftKey: false, ctrlKey: false, altKey: true, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_ALT,
               location: KeyboardEvent.DOM_KEY_LOCATION_LEFT },
    },
    { key: "KEY_Alt", isModifier: true, isPrintable: false,
      event: { shiftKey: false, ctrlKey: false, altKey: true, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_ALT,
               location: KeyboardEvent.DOM_KEY_LOCATION_RIGHT },
    },
*/
    { key: "KEY_Meta", isModifier: true, isPrintable: false,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: true, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_META,
               location: KeyboardEvent.DOM_KEY_LOCATION_LEFT },
    },
    { key: "KEY_Meta", isModifier: true, isPrintable: false,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: true, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_META,
               location: KeyboardEvent.DOM_KEY_LOCATION_RIGHT },
    },
    { key: "KEY_ArrowDown", isModifier: false, isPrintable: false,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_DOWN,
               location: KeyboardEvent.DOM_KEY_LOCATION_STANDARD },
    },
    { key: "KEY_ArrowDown", isModifier: false, isPrintable: false,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_DOWN,
               location: KeyboardEvent.DOM_KEY_LOCATION_NUMPAD },
    },
    { key: "5", isModifier: false, isPrintable: true,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_5,
               location: KeyboardEvent.DOM_KEY_LOCATION_STANDARD },
    },
    { key: "5", isModifier: false, isPrintable: true,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false,  numLockKey: true,
               keyCode: KeyboardEvent.DOM_VK_NUMPAD5,
               location: KeyboardEvent.DOM_KEY_LOCATION_NUMPAD },
    },
    { key: "+", isModifier: false, isPrintable: true,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_EQUALS,
               location: KeyboardEvent.DOM_KEY_LOCATION_STANDARD },
    },
    { key: "+", isModifier: false, isPrintable: true,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false, numLockKey: true,
               keyCode: KeyboardEvent.DOM_VK_ADD,
               location: KeyboardEvent.DOM_KEY_LOCATION_NUMPAD },
    },
    { key: "KEY_Enter", isModifier: false, isPrintable: true,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_RETURN,
               location: KeyboardEvent.DOM_KEY_LOCATION_STANDARD },
    },
    { key: "KEY_Enter", isModifier: false, isPrintable: true,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_RETURN,
               location: KeyboardEvent.DOM_KEY_LOCATION_NUMPAD },
    },
    { key: "KEY_NumLock", isModifier: true, isPrintable: false,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_NUM_LOCK,
               location: KeyboardEvent.DOM_KEY_LOCATION_STANDARD },
    },
    { key: "KEY_Insert", isModifier: false, isPrintable: false,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_INSERT,
               location: KeyboardEvent.DOM_KEY_LOCATION_STANDARD },
    },
    { key: "KEY_Insert", isModifier: false, isPrintable: false,
      event: { shiftKey: false, ctrlKey: false, altKey: false, metaKey: false, numLockKey: false,
               keyCode: KeyboardEvent.DOM_VK_INSERT,
               location: KeyboardEvent.DOM_KEY_LOCATION_NUMPAD },
    },
  ];

  function getLocationName(aLocation)
  {
    switch (aLocation) {
      case KeyboardEvent.DOM_KEY_LOCATION_STANDARD:
        return "DOM_KEY_LOCATION_STANDARD";
      case KeyboardEvent.DOM_KEY_LOCATION_LEFT:
        return "DOM_KEY_LOCATION_LEFT";
      case KeyboardEvent.DOM_KEY_LOCATION_RIGHT:
        return "DOM_KEY_LOCATION_RIGHT";
      case KeyboardEvent.DOM_KEY_LOCATION_NUMPAD:
        return "DOM_KEY_LOCATION_NUMPAD";
      default:
        return "Invalid value (" + aLocation + ")";
    }
  }

  var currentTest, description;
  var events = { keydown: false, keypress: false, keyup: false };

  function handler(aEvent)
  {
    is(aEvent.location, currentTest.event.location,
       description + "location of " + aEvent.type + " was invalid");
    events[aEvent.type] = true;
    if (aEvent.type != "keydown" ||
        (currentTest.event.isModifier && aEvent.type == "keydown")) {
      aEvent.preventDefault();
    }
  }

  window.addEventListener("keydown", handler, true);
  window.addEventListener("keypress", handler, true);
  window.addEventListener("keyup", handler, true);

  for (var i = 0i < kTests.length; i++) {
    currentTest = kTests[i];
    events = { keydown: false, keypress: false, keyup: false };
    description = "testSynthesizedKeyLocation, " + i + ", key: " +
      currentTest.key + ", location: " +
      getLocationName(currentTest.event.location) + ": ";
    synthesizeKey(currentTest.key, currentTest.event);
    ok(events.keydown, description + "keydown event wasn't fired");
    if (currentTest.isPrintable) {
      ok(events.keypress, description + "keypress event wasn't fired for printable key");
    } else {
      ok(!events.keypress, description + "keypress event was fired for non-printable key");
    }
    ok(events.keyup, description + "keyup event wasn't fired");
  }

  window.removeEventListener("keydown", handler, true);
  window.removeEventListener("keypress", handler, true);
  window.removeEventListener("keyup", handler, true);
}

// We're using TextEventDispatcher to decide if we should keypress event
// on content in the default event group.  So, we can test if keypress
// event is NOT fired unexpectedly with synthesizeKey().
function testEnterKeyPressEvent()
{
  let keydownFired, keypressFired, beforeinputFired;
  function onEvent(aEvent) {
    switch (aEvent.type) {
      case "keydown":
        keydownFired = true;
        break;
      case "keypress":
        keypressFired = true;
        break;
      case "beforeinput":
        beforeinputFired = true;
        break;
    }
  }

  for (let targetId of ["input""textarea""input_readonly"]) {
    let target = document.getElementById(targetId);

    function reset() {
      keydownFired = keypressFired = beforeinputFired = false;
      target.value = "";
    }

    target.addEventListener("keydown", onEvent);
    target.addEventListener("keypress", onEvent);
    target.addEventListener("beforeinput", onEvent);

    const kDescription = "<" + targetId.replace("_"" ") + ">: ";
    let isEditable = !kDescription.includes("readonly");
    let isTextarea = kDescription.includes("textarea");

    target.focus();

    reset();
    synthesizeKey("KEY_Enter");
    is(keydownFired, true,
       kDescription + "keydown event should be fired when Enter key is pressed");
    is(keypressFired, true,
       kDescription + "keypress event should be fired when Enter key is pressed");
    if (isEditable) {
      ok(beforeinputFired,
         kDescription + "beforeinput event should be fired (if it's enabled) when Enter key is pressed");
    } else {
      is(beforeinputFired, false,
         kDescription + "beforeinput event shouldn't be fired when Enter key is pressed");
    }
    if (isTextarea) {
      is(target.value, "\n",
         kDescription + "Enter key should cause inputting a line break in <textarea>");
    } else {
      is(target.value, "",
         kDescription + "Enter key should not cause inputting a line break");
    }

    reset();
    synthesizeKey("KEY_Enter", {shiftKey: true});
    is(keydownFired, true,
       kDescription + "keydown event should be fired when Shift + Enter key is pressed");
    is(keypressFired, true,
       kDescription + "keypress event should be fired when Shift + Enter key is pressed");
    if (isEditable) {
      ok(beforeinputFired,
         kDescription + "beforeinput event should be fired (if it's enabled) when Shift + Enter key is pressed");
    } else {
      is(beforeinputFired, false,
         kDescription + "beforeinput event shouldn't be fired when Shift + Enter key is pressed");
    }
    if (isTextarea) {
      is(target.value, "\n",
         kDescription + "Shift + Enter key should cause inputting a line break in <textarea>");
    } else {
      is(target.value, "",
         kDescription + "Shift + Enter key should not cause inputting a line break");
    }

    reset();
    synthesizeKey("KEY_Enter", {ctrlKey: true});
    is(keydownFired, true,
       kDescription + "keydown event should be fired when Ctrl + Enter key is pressed");
    is(keypressFired, true,
       kDescription + "keypress event should be fired when Ctrl + Enter key is pressed");
    is(beforeinputFired, false,
       kDescription + "beforeinput event shouldn't be fired when Ctrl + Enter key is pressed");
    is(target.value, "",
       kDescription + "Ctrl + Enter key should not cause inputting a line break");

    reset();
    synthesizeKey("KEY_Enter", {altKey: true});
    is(keydownFired, true,
       kDescription + "keydown event should be fired when Alt + Enter key is pressed");
    ok(!keypressFired,
       kDescription + "keypress event shouldn't be fired when Alt + Enter key is pressed in strict keypress dispatching mode");
    is(beforeinputFired, false,
       kDescription + "beforeinput event shouldn't be fired when Alt + Enter key is pressed");
    is(target.value, "",
       kDescription + "Alt + Enter key should not cause inputting a line break");

    reset();
    synthesizeKey("KEY_Enter", {metaKey: true});
    is(keydownFired, true,
       kDescription + "keydown event should be fired when Meta + Enter key is pressed");
    ok(!keypressFired,
       kDescription + "keypress event shouldn't be fired when Meta + Enter key is pressed in strict keypress dispatching mode");
    is(beforeinputFired, false,
       kDescription + "beforeinput event shouldn't be fired when Meta + Enter key is pressed");
    is(target.value, "",
       kDescription + "Meta + Enter key should not cause inputting a line break");

    reset();
    synthesizeKey("KEY_Enter", {shiftKey: true, ctrlKey: true});
    is(keydownFired, true,
       kDescription + "keydown event should be fired when Ctrl + Shift + Enter key is pressed");
    ok(!keypressFired,
       kDescription + "keypress event shouldn't be fired when Ctrl + Shift + Enter key is pressed in strict keypress dispatching mode");
    is(beforeinputFired, false,
       kDescription + "beforeinput event shouldn't be fired when Ctrl + Shift + Enter key is pressed");
    is(target.value, "",
       kDescription + "Ctrl + Shift + Enter key should not cause inputting a line break");

    reset();
    synthesizeKey("KEY_Enter", {shiftKey: true, altKey: true});
    is(keydownFired, true,
       kDescription + "keydown event should be fired when Alt + Shift + Enter key is pressed");
    ok(!keypressFired,
       kDescription + "keypress event shouldn't be fired when Alt + Shift + Enter key is pressed in strict keypress dispatching mode");
    is(beforeinputFired, false,
       kDescription + "beforeinput event shouldn't be fired when Alt + Shift + Enter key is pressed");
    is(target.value, "",
       kDescription + "Alt + Shift + Enter key should not cause inputting a line break");

    reset();
    synthesizeKey("KEY_Enter", {shiftKey: true, metaKey: true});
    is(keydownFired, true,
       kDescription + "keydown event should be fired when Meta + Shift + Enter key is pressed");
    ok(!keypressFired,
       kDescription + "keypress event shouldn't be fired when Meta + Shift + Enter key is pressed in strict keypress dispatching mode");
    is(beforeinputFired, false,
       kDescription + "beforeinput event shouldn't be fired when Meta + Shift + Enter key is pressed");
    is(target.value, "",
       kDescription + "Meta + Shift + Enter key should not cause inputting a line break");

    target.removeEventListener("keydown", onEvent);
    target.removeEventListener("keypress", onEvent);
    target.removeEventListener("beforeinput", onEvent);
  }
}

function runTests()
{
  testInitializingUntrustedEvent();
  testSynthesizedKeyLocation();
  testEnterKeyPressEvent();
  SimpleTest.finish();
}

</script>
</pre>
</body>
</html>

Messung V0.5 in Prozent
C=99 H=100 G=99

¤ Dauer der Verarbeitung: 0.16 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.