Zurück-Button überprüfen

tsbmusic

Erfahrenes Mitglied
Hi Leute,

ich hab mal folgene Frage. Kann man den Zurück-Button irgendwie überwachen, so das wenn er geklickt wird eine Javascript-Funktion ausgeführt wird?

Gruss
tsbmusic
 
Ich glaube nicht, dass es sowas gibt, zumindest ist es nicht in dieser Liste von SelfHTML aufgeführt.

Aber es gibt das Event onUnload, das beim Verlassen der Seite aufgerufen wird. Du kannst aber nicht unterscheiden, ob man eine völlig andere Seite aufruft oder zurück oder vorwärts surft.
 
Weil ich hab da ein Problem mit dem Laden der Seite, wenn man auf zurück klickt. Alles andere habe ich jetzt schon hinbekommen. Aber wenn man auf Zurück klickt, wird nur die URL geändert. Mehr nicht. Kann man denn irgendwie überprüfen ob der Hash geändert wird?
 
Ja das kannst du mit JavaScript, guck mal hier.

Aber ich denke es wäre besser, wenn man woanders versucht dein Problem zu beheben.
Könntest du vielleicht etwas Quellcode zeigen oder etwas in der Art?
 
Also ich hab ne Div (die heißt "content") und dann hab ich folgenen Code der den Inhalt da rein lädt:

Code:
        if(location.hash){
            var hash = location.hash.replace("#!", "");
            sitename = hash.split("sk=")[1];
            var url = sitename.split("&");
            url = url[0] + ".php?" + url[1];
            load(sitename, url);
        } else {
            load("home", "home.php");
        }
        function load(sitename, url){
            if (window.XMLHttpRequest) {
                xmlhttp = new XMLHttpRequest();
            } else {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.open("GET",url,true);
            xmlhttp.send();
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState==4) {
                    if(xmlhttp.status==200){
                        $('#sidebar .menu ul li').each(function(){
                            $(this).removeClass("active");
                        });
                        $('#sidebar .menu ul li.'+sitename).addClass("active");
                        document.getElementById("content").innerHTML=xmlhttp.responseText;
                        location.hash = "!sk="+sitename;
                    } else {
                        alert("Es ist ein Fehler aufgetreten. Bitte versuch es später nochmal.");
                    }
                }
            }
        }
 
Da gibt es noch ein Problem. Wenn diese Inhalte, die in die Div geladen werden Javascript-Funktionen enthalten, werden diese nicht ausgeführt. Wie kann ich das ändern?
 
Zu deinem zweiten Problem:
Du musst den JavaScript-Tag per DOM einfügen.
Ein Beispiel:
HTML:
<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript">
    function btnclick()
    {
      
      var scripttag = document.createElement('script');
      var typeattr  = document.createAttribute('type');
          typeattr.nodeValue = 'text/javascript';
      var scripttext = document.createTextNode('alert("hallo");');   
      scripttag.setAttributeNode(typeattr);     
      scripttag.appendChild(scripttext);
      document.getElementById("mydiv").appendChild(scripttag); 
    }
    </script>
  </head>
  <body> 
    <button type="button" onclick="btnclick()">Klick!</button><br /><br />
    <div id="mydiv">
    </div>
  </body>
</html>
Versuch mal, ob du der Funktion appendChild xmlhttp.responseXML als Parameter übergeben kannst.
 
Zurück