Ereignis: “Veraltetes Symbol verwendet, konsultieren Sie die Dokumentation für eine bessere Alternative”

Lesezeit: 3 Minuten

Benutzer-Avatar
Mistiru

Es ist schon eine Weile her, dass PyCharm (ich nehme an, es ist dasselbe wie bei WebStorm und anderen JetBrains-IDEs) eine schwache Warnung zum Thema ausgibt event Variablen, die ich in meinem Code verwende.

Zum Beispiel im folgenden Code

<div id="my-div" onclick="event.preventDefault();">...</div>

PyCharm zeigt diese Meldung “Veraltetes Symbol verwendet, konsultieren Sie die Dokumentation für eine bessere Alternative”.

Das Problem scheint zu sein, dass die event Variable bezieht sich auf Window.eventund gem MDN-Webdokumentation:

Sie sollten die Verwendung dieser Eigenschaft in neuem Code vermeiden und stattdessen das an die Ereignishandlerfunktion übergebene Ereignis verwenden. Diese Eigenschaft wird nicht allgemein unterstützt, und selbst wenn sie unterstützt wird, führt dies zu einer potenziellen Fragilität Ihres Codes.

Ich weiß, dass eine korrekte Problemumgehung darin besteht, in ein Javascript-Tag zu schreiben:

document.getElementById("my-div").addEventListener("click", function(event) {
  console.log("And use this " + event + " instead");
});

Ich frage mich nur, was, falls vorhanden, der richtige Weg wäre, Ereignisse im HTML-Code zu verwenden (onclick Attribut).

  • Nein, innerhalb eines Attribut-Event-Handlers können Sie nur global verwenden event variabel, das ist richtig. Und ja, der richtige Weg wäre, keine Inline-Event-Handler-Attribute zu verwenden – es ist nicht nur eine Problemumgehung, es ist die Lösung.

    – Bergi

    28. August 2019 um 16:40 Uhr

Benutzer-Avatar
vazsonyidl

Ich weiß nicht, ob es für jemanden noch wichtig ist oder nicht, aber getestet WebStorm 2020.3 das Folgende funktioniert, und die IDE beschwert sich nicht über Verwerfung. Darüber hinaus identifiziert WebStorm das Ereignis als Vorfall.

Codeschnipsel unten.

(function() {
    const checkBox = document.querySelector("#id-checkbox");
    checkBox.addEventListener('click', (event) => {
        event.preventDefault();
    }, false);
})();
<head>
    <script src="https://stackoverflow.com/questions/57696734/click.js" defer></script>
</head>
<body>
    <p>Please click on the checkbox control.</p>
    <form>
        <label for="id-checkbox">Checkbox:</label>
        <input type="checkbox" id="id-checkbox"/>
    </form>

    <div id="output-box"></div>
</body>

  • Sicher. Denn es ist nicht das Problem, das der Op hat

    – Itamar

    17. März 2021 um 16:30 Uhr

Für einen On-HTML-Attribut-Handler ist die Wert eines Handlers ist der Körper einer Funktion. Und wenn die Funktion gibt false zurückwerden Sie es stornieren.

Dann sollte Ihr Beispiel umgeschrieben werden

<div id="my-div" onclick="return false;">...</div>

Beachten Sie, dass Sie aus dem gleichen Grund bei der Definition eines Rückrufs in einem Ereignis-Listener den gleichen Verfallshinweis erhalten haben.

Dieser Code löst zum Beispiel dieselbe Benachrichtigung über veraltete Inhalte aus.

element.addEventListener("click", myCallbackFunction(event));

In diesem Fall sollten Sie ein Ereignis-Listener-Objekt übergeben, um diese Ablehnung zu entfernen. (dh packen Sie Ihre Callback-Funktion in ein Objekt und setzen Sie es in die handleEvent Eigentum)

Zum Beispiel:

let callbackObject = { handleEvent: function(event){...} }
element.addEventListener("click", callBackObject);

Benutzer-Avatar
Itamar

Übergeben Sie das Ereignis einfach an einen Rückruf, indem Sie es auf der JS-Seite verwenden:

function preventDefault(e) {
  e.preventDefault(); 
}
<div id="my-div" onclick="preventDefault(e)">Click me</div>

Oder Sie können es im HTML in einer Closure aufrufen

    <div id="my-div" onclick="(function(e){e.preventDefault()})(e)">Click me</div>

Ich empfehle Ihnen dringend, die erste Option zu verwenden und nicht die letztere

  • Wenn es Ihnen geholfen hat, markieren Sie es bitte als Antwort für zukünftige Besucher

    – Itamar

    22. November 2020 um 16:46 Uhr

  • Das ist überhaupt keine Lösung. Pycharm beschwert sich immer noch über die Verwendung von “event” im Attribut.

    – G. Marc

    22. Dezember 2020 um 8:58 Uhr

  • Lieber Mark, kannst du deinen Fehler in PyCharm anhängen? Dies ist die Lösung für die gestellte Frage

    – Itamar

    28. Dezember 2020 um 12:47 Uhr

  • @Itamar der Fehler ist der gleiche Deprecated symbol used, consult docs for better alternative und erscheint für beide Ihrer Beispiele in der neuesten Version, die zum Zeitpunkt dieses Kommentars von Jetbrains verfügbar war

    – Christian

    23. Januar 2021 um 12:58 Uhr

  • Ich denke schon, dass das einen anderen Grund haben könnte. Ich schlage vor, Sie stellen Ihre eigene Frage mit allen erforderlichen Informationen

    – Itamar

    24. Januar 2021 um 9:09 Uhr

1179250cookie-checkEreignis: “Veraltetes Symbol verwendet, konsultieren Sie die Dokumentation für eine bessere Alternative”

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy