heinetz: href="" vs onclick="window.location"

Hallo Forum,

ich betreue ein recht komplexes Web-Projekt. Mein Kunde (arbeitet mit IE) beklagt, dass sich die Anwendung mitunter 'aufhängt', wenn er auf einen Link klickt. Ich kann das Problem mit keinem nachvollziehen (IE6-9) und fische daher seit langer Zeit im Trüben. Jetzt habe ich eine Idee!

<a href="http://example.org">Link A</a>
<a href="javascript:test();">Link B</a>

Was passiert, wenn ich folgendes (jQuery)-Javascript über den HTML-Code laufen lasse?

$('a').click(function(){
 document.location = $(this).attr('href');
});

Zwei Dinge, die mir heute aufgefallen sind:

1. 'document.location' funktioniert bei mir zwar tadellos (auch im IE) ist scheinbar garnicht richtig.

2. Die Funktion 'test()' wird zweimal aufgerufen, was bei näherer Betrachtung auch logisch ist.

Dazu stelle ich mir zwei Fragen:

1. Was ist nun browserübergreifend richtig? window/document, mit .href oder nicht?

2. Bei dem ersten Link dürfte der Request ja auch zweimal (kurz hintereinander) ausgeführt werden. Sollte das den IE zu Fall bringen?

danke für Tipps und

beste gruesse,
heinetz

  1. Tut mir leid, aber ich halte das für völligen Nonsens. Wenn du die Problem-Ursache nicht kennst, das Problem auch nicht nachvollziehen kannst, woher möchtest du dann wissen, ob diese Verkomplizierung überhaupt etwas bringt? Und falls es tatsächlich helfen sollte, dann hast du den Fehler immer noch nicht behoben, nur verschleiert.

    Ich würde den Kunden zunächst mal bitten seinen Browser zu updaten. Falls er das nicht möchte, fordere einen ausführlichen Fehlerbericht an. Wenn du diesen hast, kannst du dich auf Fehlersuche begeben.

    1. Ich würde den Kunden zunächst mal bitten seinen Browser zu updaten.

      1. Das gibt wie ich finde ein schlechtes Bild des Entwicklers ab, da man Ursachenforschung verschiebt.

      Falls er das nicht möchte, fordere einen ausführlichen Fehlerbericht an. Wenn du diesen hast, kannst du dich auf Fehlersuche begeben.

      1. Das halte ich für den richtigen Weg. Sinnvoll wären Tools mit denen du das Problem auf dem Client Rechner direkt sehen kannst z.B. Teamview. Wenn du das Problem jedoch auf gar keinen Fall findest, wieder zu 1). Denkbar sind auch Viren, oder eine defekte Hardware (wobei ich hierunter auch ein zu langsames System zähle)

      Gruß
      der schnelle
      T-Rex

      1. Ich würde den Kunden zunächst mal bitten seinen Browser zu updaten.

        1. Das gibt wie ich finde ein schlechtes Bild des Entwicklers ab, da man Ursachenforschung verschiebt.

        Es ist aber nicht auszuschließen, dass es sich um ein lokales Browserproblem handelt, es gibt sogar Indizien dafür und falls dem so ist, spart der Kunde einen Batzen Geld.

        1. ja, vielen Dank, dass Ihr euch so einen Kopf macht, wie ich da verfahren soll, aber das ist garnicht nötig ;)

          zum Browserupdate)
          auf das System wird neben einigen Workstations deutschlandweit mit einigen 100 Windows-Terminalclients zugegriffen. Da ist so ein Browserupdate nicht mel eben gemacht. Abgesehen davon darf der Fehler auch nicht in einem alten IE6 auftreten.

          zum Teamviewer)
          ich versuche meinen Kundn seit Jahren davon zu überzeugen, dass er mich in die Lage versetzen muss, innerhalb seines Systems zu testen. Mit dem Teamviewer haben wir schonmal einen Versuch gemacht, aber da kamen sofort Datenschutzbedenken auf. Mittlerweile gibt es diesen Fehler für mich garnicht, solange ich ihn mir nicht ansehen kann.

          ... von daher geht es mir hier tatsächlich nicht darum, einen ominösen Fehler zu beheben, den ich nie gesehen habe. Das ist nur der Hintergrund, warum ich mich frage, was bei dem bei mir skizzierten Modell genau passiert.

          beste gruesse,
          heientz

  2. Hi!

    <a href="http://example.org">Link A</a>
    <a href="javascript:test();">Link B</a>

    Was passiert, wenn ich folgendes (jQuery)-Javascript über den HTML-Code laufen lasse?

    $('a').click(function(){
    document.location = $(this).attr('href');
    });

    Zwei Dinge, die mir heute aufgefallen sind:

    1. 'document.location' funktioniert bei mir zwar tadellos (auch im IE) ist scheinbar garnicht richtig.

    2. Die Funktion 'test()' wird zweimal aufgerufen, was bei näherer Betrachtung auch logisch ist.

    Dazu stelle ich mir zwei Fragen:

    1. Was ist nun browserübergreifend richtig? window/document, mit .href oder nicht?

    2. Bei dem ersten Link dürfte der Request ja auch zweimal (kurz hintereinander) ausgeführt werden. Sollte das den IE zu Fall bringen?

    Viele "einfache" Benutzer arbeiten auch im Webbrowser mit Doppelklick. Vielleicht spielt das auch eine Rolle.

    Auf alle Fälle ist aber window.location (noch besser nur location) das Gute. Ob mit oder ohne "href" ist in diesem Fall egal. Der Browser interpretiert dann den ganzen Link. Ich bevorzuge es möglichst wenig unnützen Code zu schreiben und lasse das "href" immer weg. Aus Sicht von Typisierungen ist es falsch, da ich "location" Typ Object einen String zuweise.

    Grüße

    • Steffen