lina-: Refresh und anschliessender Seitenwechsel

moin liebes Forum :)

ich hoffe mal, dass ich mich heute morgen nicht völlig auf dem Holzweg befinde sondern nur irgendwo nen kleinen Fehler habe.

Folgendes Problem:
Der Benutzer hat einen Link. Dieser Link darf aber nur in Abhängigkeit von einem Status, der auf der Seite angezeigt wird, funktionieren.
Es kann unter Umständen passieren, dass der Status sich ändert und der Benutzer kein manuelles "Refresh" der Seite macht.
Natürlich sieht er dann noch die alte Seite _und_ den Link.
Nun habe ich mir gedacht, dass ich vor dem Link eine Javascript-Funktion setze, die erstmal die Seite neu lädt, so dass der Status aktuell ist und somit der Link gar nicht funktioniert.

Um es einfacher zu gestalten hier mal ein Test-Beispiel (reload und Seitenwechsel auf "test.html") über das ich stolpere:

  
function pageRefresh(url){  
  alert(url);  
  window.location.reload();  
  window.location.href=url;  
}  

dazu noch der recht einfache link:

  
<a href="javascript:pageRefresh('test.html')">Test</a>  

Der Seitenwechsel funktioniert - aber das reload bleibt aus :(
Nehme ich den Seitenwechsel (href) raus, geht der reload.
Die Konsole meldet keinerlei Fehler :(

Hat jemand dafür eine Erklärung oder wahlweise eine Idee, wie ich mein Problem anderweitig in den Griff kriege?

liebe Grüße aus Berlin
lina-

--
Dinge aus dem linaland
Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
  1. Hello out there!

    window.location.reload();
      window.location.href=url;

    Eine Seite komplett neuladen, um sie dann gleich wieder zu verlassen??

    <a href="javascript:pageRefresh('test.html')">Test</a>

    Grmpf. <a id="foo" href="bar">Test</a>

    Im Script fragst du den Status ab:
    [lang=javascript]window.onload = function ()
    {
      document.getElementById("foo").onclick = function ()
      {
        if (status)
          window.location.href=url;
      };
    };[/code]

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
  2. hi,

    Der Benutzer hat einen Link. Dieser Link darf aber nur in Abhängigkeit von einem Status, der auf der Seite angezeigt wird, funktionieren.
    Es kann unter Umständen passieren, dass der Status sich ändert und der Benutzer kein manuelles "Refresh" der Seite macht.

    Wo ändert sich dieser Status - serverseitig?

    Nun habe ich mir gedacht, dass ich vor dem Link eine Javascript-Funktion setze, die erstmal die Seite neu lädt, so dass der Status aktuell ist und somit der Link gar nicht funktioniert.

    Der Link dürfte immer "funktionieren". Nur wie dein Server darauf antwortet, ist ggf. unterschiedlich.

    window.location.reload();
      window.location.href=url;

    Der Seitenwechsel funktioniert - aber das reload bleibt aus :(
    Nehme ich den Seitenwechsel (href) raus, geht der reload.

    Wie soll ich da als Browser reagieren?
    reload, OK - ich fordere die aktuelle Seite neu an. Da das aber einen Moment dauert, mache ich erst mal mit dem Javascript weiter.
    Aha, jetzt ersetzt du location.href durch eine neue Adresse. Na gut, dann breche ich den vorherigen Request ab, ignoriere eine eventuelle Antwort - und mache den neuen, der gerade von mir verlangt wird.

    Die Konsole meldet keinerlei Fehler :(

    Nun ja, Logik kann die auch nicht prüfen.

    Hat jemand dafür eine Erklärung oder wahlweise eine Idee, wie ich mein Problem anderweitig in den Griff kriege?

    Wenn es ein serverseitiges Problem ist, löse es serverseitig: Lass den Nutzer die Seite ruhig aufrufen, und überprüfe dann den Status - und gebe ihm entweder das gewünschte, oder eine Fehlermeldung aus.

    Wenn das Vorhandensein des Links auf der Seite dich stört - dann polle meinetwegen regelmässig mit AJAX an den Server, und entferne je nach Antwort ggf. den Link aus dem DOM-Baum der Seite. Sei dir aber im klaren darüber, dass dies natürlich nicht verhindert, dass der URL vielleicht trotzdem aufgerufen wird - serverseitig den Status prüfen und entsprechend antworten musst du also sowieso.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. moin wahsaga, hallo Gunnar :)

      Erstmal vielen Dank für eure Antworten :)

      Wo ändert sich dieser Status - serverseitig?

      _Das_  ist mein Stichwort gewesen.
      Ja mein Kopf hat sich vom "gegen die Wand rennen" wieder erholt :)
      Natürlich ist das alles serverseitig zu lösen und es war nicht mal Ajax nötig für die "nicht-Anzeige" des Links.

      Wie soll ich da als Browser reagieren?
      reload, OK - ich fordere die aktuelle Seite neu an. Da das aber einen Moment dauert, mache ich erst mal mit dem Javascript weiter.
      Aha, jetzt ersetzt du location.href durch eine neue Adresse. Na gut, dann breche ich den vorherigen Request ab, ignoriere eine eventuelle Antwort - und mache den neuen, der gerade von mir verlangt wird.

      Wenn ich so drüber nachdenke macht das natürlich alles Sinn ;) War gestern wohl nicht mein Tag :(

      liebe Grüße aus Berlin
      lina-

      --
      Dinge aus dem linaland
      Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)