Mausklick simulieren

  • Ich, als Anfänger, arbeite an einem sehr umfangreichen JS Projekt.

    Dort ist eine Box zum Anklicken die im HTML wie folgt konfiguruiert ist:


    HTML
    1. <li id="xy">
    2. <div class="description">
    3. <div class="layout"></div>
    4. </div>
    5. </li>


    Da die js-Files sehr umfangreich und kompimiert sind, konnte ich nicht eruieren wie und wo ein KIickereignis verarbeitet wird.

    Ich möchte, dass die Aktion jeweils beim Start der Seite automatisch ausgelöst wird ohne, dass zuerst auf die Box geklickt werden muss. Deshalb zu meiner Frage. Gibt es eine Möglichkeit, mit dem Start der Seite einen Mausklick zu simulieren, der die Aktion auslöst.


    Ich bin sehr froh, wenn mir jemand weiterhelfen kann. Besten Dank schon jetzt.


    Gruss

    langi

  • Mit dem HTML Schnipsel kann ich nichts anfangen. Was soll mir das zeigen?


    Da die js-Files sehr umfangreich und kompimiert sind, konnte ich nicht eruieren wie und wo ein KIickereignis verarbeitet wird.

    Das Versteh' ich nicht. Was hat der Umfang mit der Übersichtlichkeit zu? Oder hast du deinen Code minifiziert?


    Einen Klick, kannst du mit HtmlElement.click() simulieren, Aber muss es wirklich ein simulierter Klick sein?

    Normalerweise wir ein Klick von einem Klickhandler verarbeitet. Das ist eine Funktion, die du einfach beim Start deines Programs aufgerufen kannst.

  • Ja, das ist das Problem. Ich habe es falsch ausgedrückt, fast aller Code ist minifiziert.

    Wenn ich das richtig verstehe kann mein Anliegen mit HtmlElement.click() nicht gelöst werden, da der Mausklick nur simulert wied wenn

    Mit dem HTML Schnipsel kann ich nichts anfangen.

    Ich eben auch nicht ;-(

    Ich wollte damit nur zeigen, dass es kein Button und keine Checkbox ist.


    Wie kann ich denn am besten eruieren, welcher Klickhandler verantwortlich ist?

  • [...] fast aller Code ist minifiziert.

    Und du hast die Quelldateien nicht? Woher ist den der Code?


    Wenn ich das richtig verstehe kann mein Anliegen mit HtmlElement.click() nicht gelöst werden, da der Mausklick nur simulert wied wenn

    wenn was? Hier fehlt der Rest des Satzes.


    Ich wollte damit nur zeigen, dass es kein Button und keine Checkbox ist.

    Das ist nicht schlimm. Man kann das Klick-Event auf allen HtmlElementen auslösen und auch abfangen.


    Wie kann ich denn am besten eruieren, welcher Klickhandler verantwortlich ist?

    Das machst du am Besten über die Browser Entwicklerwerkzeuge.

    in Chrome hier auf der Seite sieht das zB so aus:

    pasted-from-clipboard.png
    Wenn du auf den Link klickst, landest du in deinem Handler.



    Tip:

    Bei minifiziertem Code gibt es meist einen Button, der de-minifiziert,

    bei Chrome ist der links unten in der Ecke des Sources Tabs.


    pasted-from-clipboard.png

  • Was kann ich nun mit dem anfangen??

    Nicht viel. Nun müsstest du als nächstes den Code nach einem Objekt in der Variablen C und deren Methode .fire() durchsuchen. Außerdem nach einem Objekt das sich in der Variablen r befindet und die Methode .getEvent() besitzt.


    Wenn du den Quelltext nicht hast und außerdem, noch Anfänger bist, wird das eine sehr schwierige und langwierige Arbeit.


    Ich verstehe jetzt warum du den Klick simulieren wolltest.

    Kannst du nicht das HtmlElement, auf dem der Handler registriert ist mit .click() "anklicken"?

    Wie gesagt, die .click() Methode existiert auf jedem HtmlElement


    wenn etwas klickbar sein soll, verwende <button>s, sonst ist das nicht bedienbar.

    Wieso? Ob man ein UI Element gut bedienen kann, liegt doch daran, wie man es styled und nicht an dem Element, dass zu Grunde liegt.

    Wenn man ein <div> oder auch <span> so styled das der User es als Button oder anderes Klickbares UI Element erkennt und eventuell noch ein cursor: pointer vergibt, ist das sehr wohl bedienbar.

  • Wie geht denn das konkret?

    Am besten bindest du ein eigenes Script ein, dass dann so etwas enthält.

    JavaScript
    1. window.addEventListener('load', () => {
    2.     // Du musst das Element, auf dem der Eventlistener sitzt selektieren.
    3.     // Da ich deinen Code nicht kenne, kann ich dir hierbei nicht helfen.
    4.     const myElement = document.querySelector('Hier muss der Element Selektor rein')
    5.     // So führst du einen Click auf dem Element aus.
    6.     myElement.click();
    7. });

    Du musst auf jeden Fall dafür sorgen, dass dieses Script NACH dem ausgeführt wird, dass den Handler Setzt.

    Wie du das machst, kann ich dir leider nicht sagen, da ich deinen Code nicht kenne.

  • Es will nicht. :-(


    Ich habe nun aber im Web Entwickler Tool von Firefox festgestellt, dass der event eine Ebene höher angesiedelt ist.


    Deshalb nochmals der entspr. vollständige Selector:



    Zur Erklärung:

    ul umfasst mehrere identische Bereichemit li aber anderem Inhalt . Jede li Bereich hat eine andere ID. Ich will aber nur die id="xy" klicken.

    Ich krieg's aber nicht hin.

  • PS: Je nachdem wo der Handler aufgehängt ist, kann es jedoch angebracht sein, den vollständigen Selektor aus #14 zu verwenden, weil dieser die Ebene anspricht, die am tiefsten liegt. Durch das Event-Bubbling sollte der Klick dann auch einen Handler erreichen, der höher aufgehängt ist.

    Am besten wäre es, wenn man die Seite online vorliegen hätte, dann könnte man es in den Entwicklerwerkzeugen schnell austesten.