PHP Dynamischer Titel einer Page ohne Refresh

iGDark

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
306
Mahlzeit allerseits...
bin schon seit geraumer Zeit auf der Suche danach, ob und wie es möglich ist den Titel einer Site dynamisch zu gestalten. Kurze Problemschilderung:

Ich bin dran eine Community zu programmieren. Der Kern hier drin besteht - wer wisse es nicht - durch den Austausch von Telegrammen / Nachrichten. Das funktioniert alles so weit, schön und gut. Nun möchte ich aber eine kleine Erleichterung für den End-User einbauen.

Viele Chatter haben mehrere Communitys gleichzeitig offen und Browsen mit mehreren Fenstern (Tabbed oder mehrere einzelne, ist ja mal egal).

Wenn der User nun eine neue Nachricht bekommt möchte ich erreichen das sich der Titel der Seite ändert. Also vom Namen der aktuellen Area (wo sich der User aufhält) zu "Du hast neue Nachrichten".
Das Problem dabei ist aber das ich dabei nicht die ganze Seite aktualisieren will (da ich ja sonst nur ne kleine DB-Abfrage bräuchte), sondern soweit es geht nur den Titel da es ja sein kann das der User gerade z.b. eine Nachricht schreibt und diese würde ja durch den Refresh verloren gehen ^^ Mir gehts eben darum das man es dann im Tab-Titel (oder Fenster-Titel in der Startleiste) sieht das eine neue Nachricht da ist ohne das die ganze Seite neu geladen wird. Ist das überhaupt möglich ohne Frames?
per DHTML oder Java sollte sich sowas doch bestimmt realisieren lassen oder?

Danke schonmal,
Marco
 
Naja mit [JavaScript] document.title = "TITEL"; lässt sich der Titel setzen, wie Google mir gerade bereitwillig mitteilte.
 
wie man den titel setzt weiß ich selber ^^
er soll sich automatisch aktualisieren, nicht erst wenn man klickt oder die seite refresht :O
 
dann bau mit JS doch nen script, was einfach eine bestimmte zeit X wartet, bis es sich selbst nochmal ausführt und dann lässt du damit den Titel ändern, dass der User eine neue nachricht bekommt kannst du ja mit XML und AJAX realisieren
 
wie vesh scho gesagt hat.. genau so gehts ;)

davon abgesehn ist eine email benachrichtigung imho viel sinnvoller... nur hängt dann das ganze am user ;) Wenn ich im Forum eine nachricht bekomme, bekomm ich ne mail, und bei windows popt dann bei mir rechts unten ganz klein auf, dass ich ne mail bekommen hab ;)

beachte bei der autorefresh variante, dass dein mysql server dadurch evtl. erheblich mehr belastet wird... weil wie gesagt manche einfach die seite in einem tab stunden lang offen haben, ohne darauf rum zu surfen. Und wenn das bei einer großen community jeder macht... au weia, das werden viele anfragen ;) (natürlich auch abhängig vom intervall)
 
naja etz stell dir mal vor ein user schreibt / chattet mit mehreren personen dann is dem sein mail-kasten ja in 2 minuten voll :D ^^

das es eine gewisse last auf den SQL-Server setzt ist mir klar aber atm is das noch nicht von bedeutung ;) es is halt die einzige variante es per tabs zu machen...
danke für die antworten ich probiere es dann gleich mal aus :D
 
so ich hab mir das etz alles soweit mal angeschaut etc... mal selber was probiert aber funktionieren tut da gar nichts :>

wenn man den code von hier nimmt: http://aktuell.de.selfhtml.org/weblog/javascript-timer

ok...da werden 2 timer gestartet, nehm ich einen raus, brauch ja nur einen.
okay wenn der countdown dann durch ist ändert sich aber nicht der titel der page..
also der countdown läuft, wenn er durch ist soll es halt so sein denk ich mal:

Code:
  };
  var completed = function () {
    element.document.title = "eine nachricht ist da"
  };

bin nich der totale java-checker da ich mehr mit php arbeite...wenn mir da jemand bissl mehr unter die arme greifen kann :> wäre toll :D
 
PW-toXic schrieb:
ich glaube du brauchst eher ein interval

Code:
var interval = window.setInterval(test, 100);
function test() {
document.title = "neu! " + (new Date()).getTime();
}


ich will doch nicht die zeit im titel haben sondern das sich der titel nach z.b. einer minute aktualisiert ^^ und dann drinne steht: Du hast neue Nachrichten
oder wenn keine da sind steht halt der normale titel der homepage drinne...

aber wie kann ich den titel per countdown ändern...hab bissi da rumprobiert (wie oben beschrieben) und der titel hat sich nach ablauf des timers nicht geändert :(

hier der code was ich versucht hab:

Code:
<html>
<head>
<script type="text/javascript">
Function.prototype.Timer = function (interval, calls, onend) {
  var count = 0;
  var payloadFunction = this;
  var startTime = new Date();
  var callbackFunction = function () {
    return payloadFunction(startTime, count);
  };
  var endFunction = function () {
    if (onend) {
      onend(startTime, count, calls);
    }
  };
  var timerFunction =  function () {
    count++;
    if (count < calls && callbackFunction() != false) {
      window.setTimeout(timerFunction, interval);
    } else {
      endFunction();
    }
  };
  timerFunction();
};

function leadingzero (number) {
    return (number < 10) ? '0' + number : number;
}
function countdown (seconds, target) {
  var element = document.getElementById(target);
  var calculateAndShow = function () {
    if (seconds > 0) {
      var h = Math.floor(seconds / 3600);
      var m = Math.floor((seconds % 3600) / 60);
      var s = seconds % 60;
      element.innerHTML=
        leadingzero(h) + ':' +
        leadingzero(m) + ':' +
        leadingzero(s);
      seconds--;
    } else {
      return false;
    }
  };
  var completed = function () {
    element.innerHTML = "<title>Countdown fertig</title>";
  };
  calculateAndShow.Timer(1000, Infinity, completed);
}
window.onload = function () {
  new countdown(10, 'counter1');
};
</script>
</head><body>
<h1>The Final Countdown</h1>
<p id="counter1"></p>
<p><a href="">Neu starten!</a></p>
</body></html>

man hat also eine seite...klickt man auf counter starten....läuft die zeit runter und dann sollte doch normal der titel auf "Countdown fertig" ändern...leider passiert gar nichts :(
 
ich will doch nicht die zeit im titel haben sondern das sich der titel nach z.b. einer minute aktualisiert ^^ und dann drinne steht: Du hast neue Nachrichten
oder wenn keine da sind steht halt der normale titel der homepage drinne...

dann machst du es eben so:

Code:
var interval = window.setInterval(test, 1000 * 60); // eine minute!
function test() {
if (myAjaxRequest_userHasNewMessage("<?php echo $userId ?>")) {
document.title = "neue Nachricht!";
}
}


und wie man so eine schöne ajax Funktion schreibt steht in vielen anderen threads, und googel bewirft dich nur mit massenweisen webseiten, wo das erklärt wird.
Ein bisschen was darfst du schon auch selber machen ;)



edit: und bevor du dich zu tode suchst:
https://www.computerbase.de/forum/threads/php-function-mit-js-ajax-ausfuehren.436212/
 
Zuletzt bearbeitet:
danke ^^
keine sorge ich hab mir das programmieren durch googeln selber bei gebracht ^^ nur eben zu diesem thema titel refreshen ohne reload hab ich nich wirklich was gefunden weil ich nicht mal sicher war ob der sich so dynamisch machen lässt :)

ich probiers morgen mal aus :) danke schonmal für den tipp :D
 
Zurück
Oben