Pierre: JavaScript (jQuery): Problem mit Maillink

Hallo

Ich hoffe, ich bekomme hier Hilfe. JavaScript ist leider nicht so mein Ding. Mein Kunde hat den Wunsch, beim Überfahren (Mouseover) eines Namens ein kleines Tooltipp mit Zusatzinfos einzublenden, bei Klick auf den Namen soll der Mailclient geöffnet werden. Ich habe ein jQuery basiertes Script gefunden (jTip), welches genau das macht und auch gut zum Design der Site passt. Beim Mouseover über den Text, wird das Tooltipp eingeblendet und zeigt auf Wunsch darin den Inhalt eines HTML-Files an, was sehr praktisch ist, da man das Tooltipp so auch formatieren kann und den Text nicht irgendwo im Code verschachteln muss. Bei Klick auf den Anker kann man eine Website aufrufen, was prima funktioniert. Ich habe nun anstelle von http://www.meinlink.com einfach mailto:mail@mailadresse.com benutzt. Soweit funktioniert das auch, aber – und nun kommt das Problem – werden aus IE und FF immer mehrere Mailfenster geöffnet. Einzig Safari scheint das nicht zu kümmern. Der öffnet mir schön ein Fenster im Mailclient, wie man das erwartet und gut ist.

Ist jemand hier ein gewiefter JavaScript Kenner der mir bei diesem Problem helfen kann? Ich zahle gerne für den Aufwand, da ich wirklich kein Javascript kann und keine andere Lösung gefunden habe, welche all dies so schön erledigt. Wahrscheinlich ist es keine riesen Geschichte für einen JavaScript-Kenner, der auch schon mal mit jQuery gearbeitet hat. Ich steh aber absolut am Berg. Habe schon verscuht den Entwickler anzuschreiben, habe aber keine Antwort bekommen. Wär supernett, wenn sich hier jemand die Geschichte mal anschauen könnte... Bin ziemlich verzweifelt und mein Kunde sitzt mir im Nacken...

Nachtrag: IE7 hats eben geschafft mit einem Klick 9 Mailfenster zu öffnen... ;-)

Habe die Seite auf meinem Testserver abgelegt:
Beim überfahren der Namen in der Navigation erscheint der Tooltipp, beim Klick öffnet sich der Mailclient.

Musterseite

Herzlichen Dank für Tipps und Hifen.
Pierre

  1. Hi Pierre,

    Habe die Seite auf meinem Testserver abgelegt:
    Beim überfahren der Namen in der Navigation erscheint der Tooltipp, beim Klick öffnet sich der Mailclient.

    Musterseite

    ist die Seite noch so, wie zum Zeitpunkt des UP? Irgendwie kann ich es da nicht mehr nachvollziehen, weil bei Klick auf die Namen ein weiteres Fenster aufgeht. Ich vermute auch kein Javascriptproblem, sondern ein Mailclientproblem bei dir. Zeig es noch mal so, wie du es beschrieben hast, damit man es noch mal ausprobieren kann.

    ciao
    romy

  2. Hmmm... hder Link stimmt eigentlich noch, irgendwie hab ich im Posting hier aber wohl was falsch gemacht. Das Problem ist definitiv nicht an meinem Mailclient. Habs auf meinem Mac, MacBook und unter Windows getestet und überall das gleiche Problem. Und mein Kunde hats auch... :-(

    Also hier nochmal der Link zum draufklicken... Hoffe, dass sich noch eine Lösung findet, bin kurz vor dem Verzweifeln und finde nirgends Hilfe.

    http://www.per-net.ch/test/JTip/sub/firma/team.html

    Schönen Dank
    Pierre

    1. Hi Pierre,

      Also hier nochmal der Link zum draufklicken... Hoffe, dass sich noch eine Lösung findet, bin kurz vor dem Verzweifeln und finde nirgends Hilfe.
      http://www.per-net.ch/test/JTip/sub/firma/team.html

      Ja, jetzt sehe ich das, was du beschrieben hast. Ich habe auch den Effekt der Mehrfach öffnenden Fenster (XP+IE6). Du linkst ja auf ein Dikument, welches du dann in diesem Tooltip einbindest mit z.B. jtip-ivonne.html?link=mailto:ivonne.huggenberger@textcontrol.ch, dieses Dokument enthält aber schon den mailto, den du noch mal explizit übergibst. Dieser übergebene mailto könnte das Problem sein, warum auch immer. Kannst du den weglassen, testweise?

      Btw: Ich würde instinktiv versuchen in dem Tooltip auf den Satz "zum mailen bitte klicken" zu klicken, vielleicht kannst du da noch dazu schreiben, dass der Link geklickt werden soll auf dem man gerade steht.

      ciao
      romy

      1. Hallo Romy

        Kannst du den weglassen, testweise?

        Habe bei Andrea Wittwer den Link im Tooltip weggelassen. Nützt auch nix. Lustigerweise ist es ziemlich zufällig, wie oft sich das Mailfenster öffnet. Zwischen 1 und 5 hatte ich im FF schon alles. Auch mehrmaliges Klicken auf den gleichen Link öffnet das eine Mal das Mailfenster 2x, beim nächsten Mal dann 3 oder 4x...

        Bei Cis Koch habe ich nochmal einen normalen Weblink eingebaut. Das funktioniert wunderbar. Wenn ich JavaScript kennen würd, würd ich versuchen im jTip.js die Funktion welche die Website per Klick aufruft umzuschreiben, dass man dort vielleicht das mailto direkt einbinden könnte, verstehe das aber zuwenig und hab nicht rausgefunden, wo das in dieser Datei wirklich gemacht wird. Die Funktion, dass eine HTML-Seite aufgerufen brauch ich ja nicht... Vielleicht würde das weiterhelfen und vielleicht kann mir da jemand helfen, diese Funktion mal genauer anzugucken ?

        Wär nett und würd meinen Blutdruck wieder etwas auf Normallevel bringen ;-)
        Besten Dank
        Pierre

        1. Hi Pierre,

          Habe bei Andrea Wittwer den Link im Tooltip weggelassen. Nützt auch nix. Lustigerweise ist es ziemlich zufällig, wie oft sich das Mailfenster öffnet. Zwischen 1 und 5 hatte ich im FF schon alles. Auch mehrmaliges Klicken auf den gleichen Link öffnet das eine Mal das Mailfenster 2x, beim nächsten Mal dann 3 oder 4x...

          Ich habe dieselbe Erfahrung gemacht, dass es sich willkürlich mehrfach öffnet. Ich meinte aber schon aus dem Link im Menu das "?link=mailto" entfernen, hattest du das versucht?

          Ich habe mir die beiden JS-Dateien angeschaut, werde aber auch nicht schlau draus, habe damit auch wenig Erfahrung, hätte nur zufällig sein können, dass
          es funkt. ;)

          ciao
          romy

  3. Hallo,

    Bei jedem Hover über einen Link wird ein neuer, weiterer click-Handler registriert. Wenn du zehnmal mit der Maus über den Link fährst und ihn dann klickst, werden zehn Mailfenster geöffnet.

    $('#' + linkId).bind('click',function(){
       window.location = params['link']
    });

    Darus kannst du machen:

    $('#' + linkId).unbind('click').bind(function () {
       window.location = params['link'];
    });

    Damit ist immer nur ein click-Handler registriert.

    Mathias

    1. Hallo Mathias

      hätte deine Antwort fast übersehen und bin überglücklich, dass mir doch noch jemand helfen kann. Du hast das Problem auf jeden Fall richtig erkannt. Das zufällige öffnen mehrerer Fenster hat tatsächlich damit zu tun... und schon isses nicht mehr zufällig.

      Habe deinen Code mal in die jtip.js eingebaut, aber nu geht gar nix mehr. Das Mouseover zeigt nichts mehr an und beim Klick wird einfach die Verknüpfte html-Datei gezeigt, welche eigentlich den Inhalt des Tooltipps anzeigen soll.

      Haste vielleicht noch einen Workaround um diesen click-Handler nur einmal zu registrieren?

      Ganz herzlichen Dank schon mal für die Eingrenzung des Problems.
      Pierre

      1. Hallo,

        Ganz herzlichen Dank schon mal für die Eingrenzung des Problems.

        Sorry, aber ich habe auch wenig Lust, mich in eine fremde Bibliothek einzuarbeiten und dir die Korrekturen zu diktieren. Mit dem Hinweis hättest du dich selbst einarbeiten können.

        Wie auch immer, in meinen Code war ein Fehler, der mit ein wenig jQuery-Wissen offensichtlich wäre. Es fehlt der erste bind-Parameter. Aber es gibt noch ein weiteres Problem. Oben in jTip wird für die a-Elemente gesetzt:

        .click(function(){return false});

        Das wird durch unbind natürlich wieder gelöscht, daher ist ein solches Unterdrücken der Standardaktion im besagten click-Handler nötig:

        $('#' + linkId)
          .unbind('click')
          .bind('click', function (e) {
            window.location = params['link'];
            e.preventDefault();
          });

        return false ginge natürlich auch, aber das ist der sauberere Weg, dem einen jQuery extra zur Verfügung stellt. (Das ist eine browserübergreifende Implementierung des W3C-Standards.)

        Eventuelle Fehler in obigem Code bitte selber korrigieren.

        Mathias

        1. Besten Dank Mathias

          Bei allen anderen Problemen versuche ich natürlich auch mit Halbwissen weiterzukommen. Hier war ich aber definitiv überfordert und habe Hilfe von einem Profi gesucht, weil ich dachte, dass es für einen solchen wahrscheinlich keine riesen Geschichte sei, das Problem zu beheben. Umso mehr herzlichen Dank für die Hilfe, die Erklärung und den gefixten Code. Ein kleiner Webdesigner ist nun glücklich, weils sein Kunde auch ist :-)

          Grüsse
          Pierre