ebody: Klick simulieren

Hallo,

https://codepen.io/anon/pen/XPgXvX

Ich möchte einen Klick simulieren, damit $("#hello").click(function(){... ausgeführt wird, auch wenn nicht auf "hello" geklickt wurde.

Mit $( "#hello" ).trigger( "click" ); funktioniert es aber leider nicht. Warum nicht?

Gruß ebody

akzeptierte Antworten

  1. Tach!

    Mit $( "#hello" ).trigger( "click" ); funktioniert es aber leider nicht. Warum nicht?

    Der Klick wird ausgelöst. Aber wenn du den Eventhandler erst anschließend zuweist, kann der natürlich nicht mehr vom vorhergehenden Click aufgerufen werden.

    dedlfix.

  2. @@ebody

    https://codepen.io/anon/pen/XPgXvX

    Ich möchte einen Klick simulieren, damit $("#hello").click(function(){... ausgeführt wird, auch wenn nicht auf "hello" geklickt wurde.

    Mit $( "#hello" ).trigger( "click" ); funktioniert es aber leider nicht. Warum nicht?

    Weil zum Zeitpunkt des Aufrufs von trigger("click") noch gar kein Click-Eventhandler registriert ist.

    LLAP 🖖

    --
    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  3. Hallo ebody,

    da ich es mit einer Empfehlung schon oft genug sinnlos versucht habe, nun mal anders:

    $(document).ready(function() {
       // code to perform when DOM is ready…
    });
    

    Es wird der Tag kommen, wo eine jQuery Version aus deprecated ein removed macht und dann wird Dir dieser Code mit dem nackten Hintern laut furzend ins Gesicht springen.

    $(function() {
       // code to perform when DOM is ready…
    });
    

    Ist doch auch viel kürzer!

    Oder jQuery-frei - wird auch etwas früher ausgeführt:

    document.addEventListener("DOMContentLoaded", function() {
       // code to perform when DOM is ready…
    });
    

    Rolf

    --
    sumpsi - posui - clusi
    1. hallo

      Es wird der Tag kommen, wo eine jQuery Version aus deprecated ein removed macht und dann wird Dir dieser Code mit dem nackten Hintern laut furzend ins Gesicht springen.

      Dann bindest du jQuery falsch ein.

      1. Hallo beatovich,

        ok, wenn ich jQuery so einbinde, dass automatisch die neuste Version verwendet wird, dann mache ich was falsch. Das Default-CDN von jQuery, und auch die CDN von Google und Microsoft, verlinken eine spezifische Version. Gibt's überhaupt ein CDN, aus dem ich die "Latest-Version" einbinden kann?

        Aber wenn die jQuery-Macher beschließen, den Elefantenfußabdruck von jQuery zu reduzieren, ein paar alte Zöpfe abzubrennen und in - sagenwirmal - jQuery 4.0 alle missbilligten Varianten des Ready-Handlers entfernen, dann geschieht der erwähnte übel riechende Sprung. Unnötigerweise.

        Rolf

        --
        sumpsi - posui - clusi
        1. hallo

          Hallo beatovich,

          ok, wenn ich jQuery so einbinde, dass automatisch die neuste Version verwendet wird, dann mache ich was falsch. Das Default-CDN von jQuery, und auch die CDN von Google und Microsoft, verlinken eine spezifische Version. Gibt's überhaupt ein CDN, aus dem ich die "Latest-Version" einbinden kann?

          Du machst immer noch etwas wichtiges grundsätzlich falsch.

          1. Hallo beatovich,

            dass ich jQuery einbinde?

            Rolf

            --
            sumpsi - posui - clusi
            1. hallo

              Hallo beatovich,

              dass ich jQuery einbinde?

              Dass du die same-domain-policy missachtest!

              1. Hallo beatovich,

                abgesehen davon, dass es eigentlich um das Installieren eines ready-Handlers ging - hilf doch mal einem dummen Menschen auf die Sprünge. Ich lebe primär im Intranet und übersehe da wohl was.

                Grundsätzlich kann ich doch eine JS Library aus einem CDN (das dafür vorgesehen ist) holen. Mit jQuery und code.jquery.com z.B. geht das.

                Ob ich spezielle Dinge tun muss, wenn meine Seite per https geliefert wird, kann ich gerade nicht ausprobieren (weil ich auf meinen Testmaschinen kein Zertifikat habe).

                Rolf

                --
                sumpsi - posui - clusi
                1. hallo

                  dann hilf doch mal einem dummen Menschen auf die Sprünge. Ich lebe primär im Intranet und übersehe da wohl was.

                  Grundsätzlich kann ich doch eine JS Library aus einem CDN (das dafür vorgesehen ist) holen. Mit jQuery und code.jquery.com z.B. geht das.

                  Können kannst du ja, nur ist das ziemlich dumm. Immer weniger Leute sind bereit, 3rd Party Content für Scripte zuzulassen.

                  1. Hallo beatovich,

                    Immer weniger Leute

                    Bitte wiesele nicht herum und rede Klartext. Was ist "immer weniger"? Statt 99.4% jetzt nur noch 99.2% ? Keine Ahnung. Wieviele Leute machen sich diese Mühe?

                    Blocken von 3rd Party Scripts ist eine vorsätzliche Entscheidung des Anwenders. Es gibt massig Seiten, die ohne 3rd Party Content nicht funktionieren. D.h. für die typischen CDN sind sowieso Ausnahmeregeln fällig.

                    Rolf

                    --
                    sumpsi - posui - clusi
                    1. hallo

                      Hallo beatovich,

                      Immer weniger Leute

                      Bitte wiesele nicht herum und rede Klartext. Was ist "immer weniger"? Statt 99.4% jetzt nur noch 99.2% ? Keine Ahnung. Wieviele Leute machen sich diese Mühe?

                      Diese Zahlen darfst du selber ermitteln. Angesichts angekündigter Browser-Entwicklungen darfst du davon ausgehen, dass sharing im Internet nicht mehr der unangefochtene Default ist.

                      Blocken von 3rd Party Scripts ist eine vorsätzliche Entscheidung des Anwenders.

                      Nein, die Freigabe ist es.

                      Es gibt massig Seiten, die ohne 3rd Party Content nicht funktionieren.

                      Und was will mir das sagen?

                      D.h. für die typischen CDN sind sowieso Ausnahmeregeln fällig.

                      Seit wann gibt es heilige Kühe? Wenn ich Pech habe landet dein Lieblings CDN auf einer Malware-Liste. Dann nützt nicht mal meine 4. und 5.Freigabe.

                  2. Aloha ;)

                    Immer weniger Leute sind bereit, 3rd Party Content für Scripte zuzulassen.

                    3rd Party Content könnte inzwischen auch ein rechtliches Problem sein (DSGVO). Mit 3rd Party Content schleußt man personenbezogene Daten (IP-Adresse etc.) an einen Drittanbieter weiter, ohne, dass der User dafür im Vorhinein ein Opt-In machen kann.

                    Mir ist bewusst, dass es trotzdem "alle" nach wie vor tun. Bisher war Datenschutz aber auch "allen" egal, so dass das als Ausrede nicht zählt.

                    Ich weiß nur, dass bspw. mein Hoster sich extra eine Auftragsdatenverarbeitungsvereinbarung hat geben lassen - und die dürfte man für gewöhnlich mit Feld-Wald-Wiesen-CDNs nicht geschlossen haben.

                    Ich habe aus den von mir betreuten Projekten alle 3rd-Party-Einbindungen (z.B. Google Fonts) entfernt und durch selbst gehostete Inhalte ersetzt.

                    Ob das notwendig ist wird wohl nur die zukünftige Rechtsprechung zeigen. Gerade bei content, der genauso gut selbst gehostet werden wie vom CDN eingebunden werden kann, würde ich das allerdings bejahen - es ist an der Stelle lediglich eine Abwägungsfrage, ob bei diesen Inhalten ein berechtigtes Interesse des Anbieters an einer Einbindung besteht oder ob die Hürde zum Selbst-Hosten so gering ist, dass man das verneinen muss.

                    Wir müssen das an dieser Stelle auch gar nicht diskutieren, ich wollte nur darauf hinweisen.

                    Von der moralischen Warte her brauchen wir, glaube ich, nicht lange drüber diskutieren, dass es fragwürdig ist, den individuellen Seitenaufruf jedes Nutzers gegenüber Dritten preiszugeben.

                    Grüße,

                    RIDER

                    --
                    Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
                    # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
                    1. Hallo Camping_RIDER,

                      danke für den Refresh, das hätte mir nach den Diskussionen über DSGVO auch selbst klar sein können.

                      Rolf

                      --
                      sumpsi - posui - clusi
                    2. Hallo,

                      Immer weniger Leute sind bereit, 3rd Party Content für Scripte zuzulassen.

                      3rd Party Content

                      da ich 3rd Party Content (Bilder und evtl. Scripte) nur in Verbindung mit Javascript verwende, frage ich vorher per Javascript nach, ob das OK ist. Wer ablehnt, sieht dann allerdings nur ein leeres Feld mit entsprechender Bemerkung.

                      Gruß
                      Jürgen

                      1. Aloha ;)

                        da ich 3rd Party Content (Bilder und evtl. Scripte) nur in Verbindung mit Javascript verwende, frage ich vorher per Javascript nach, ob das OK ist. Wer ablehnt, sieht dann allerdings nur ein leeres Feld mit entsprechender Bemerkung.

                        Ja, das ist ein sinnvolles Vorgehen, zumindest im Sinne der DSGVO.

                        Grüße,

                        RIDER

                        --
                        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
                        # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
                    3. Hallo Camping_RIDER,

                      Mit 3rd Party Content schleußt man

                      Das ist ja scheuslich.

                      Bis demnächst
                      Matthias

                      --
                      Rosen sind rot.
    2. @@Rolf B

      Oder jQuery-frei - wird auch etwas früher ausgeführt:

      document.addEventListener("DOMContentLoaded", function() {
         // code to perform when DOM is ready…
      });
      

      Dann sollte der Code // code to perform when DOM is ready… aber auch jQuery-frei sein. Andernfalls wäre „etwas früher ausgeführt“ zu früh, wenn es noch vor dem Laden der jQuery-Bibliothek ist.

      Aber jQuery-frei ist ja generell nicht schlecht; das Laden der jQuery-Bibliothek kann man sich (und vor allem: den Nutzern) ersparen.

      LLAP 🖖

      --
      „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann