WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 17.11.2003, 19:07   #1
w_fuchs
Veteran
 
Registriert seit: 30.04.2001
Alter: 42
Beiträge: 353


w_fuchs eine Nachricht über ICQ schicken
Standard JavaScript: "aktualisiert am:"

Mit folgendem Code lass ich im bottom_frame das Änderungsdatum der Seite anzeigen.
Bei dem Code ist ja eig. nur folgendes wichtig:
var LastModDate = new Date(document.lastModified);
So, und jetzt die Frage: Woruaf bezieht sich dieses "document"? Denn er aktualisert nur, wenn ich auch tatsächlich im bottom_frame was ändere und z.B. nicht im main_frame.

Danke für die Hilfe!

<td width="7%" height="42">
<div align="left">




<font size="1"><font face="Verdana, Arial, Helvetica, sans-serif">Aktualisiert am:</font>
</font>
<font size="1" style="bold">
<script language="JavaScript">
<!-- Hide JavaScript from Java-Impaired Browsers
// -->
function initArray()
{
this.length = initArray.arguments.length
for (var i = 0; i < this.length; i++)
this[i+1] = initArray.arguments[i]
}
var DOWArray = new initArray("So","Mo","Di","Mi","Do","Fr","Sa");
var MOYArray = new initArray("Jan","Feb","März","Apr","Mai","Juni","J uli","Aug","Sept","Okt","Nov","Dez");
var LastModDate = new Date(document.lastModified);
var Name = navigator.appName;
document.write(DOWArray[(LastModDate.getDay()+1)],", ");
document.write(MOYArray[(LastModDate.getMonth()+1)]," ");
if ( Name == "Netscape" )
{
document.write(LastModDate.getDate(),", ",(LastModDate.getYear()+1900));
}
else
{
document.write(LastModDate.getDate(),", ",(LastModDate.getYear()));
}
</script>
</font></p>
</div></td>
____________________________________
lg
WF
w_fuchs ist offline   Mit Zitat antworten
Alt 17.11.2003, 19:41   #2
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

document bezieht sich immer auf die gerade geladene Seite.
Wenn du das änderungsdatum des Hauptframes anzeigen willst musst du mit parent.frames[i].document... darauf zugreifen, wobei i die Nummer des Frames ist, das erste Frame ist frame[0], das zweite [1],usw.

Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 17.11.2003, 19:49   #3
w_fuchs
Veteran
 
Registriert seit: 30.04.2001
Alter: 42
Beiträge: 353


w_fuchs eine Nachricht über ICQ schicken
Standard

Die Durchnummeriering bezieht sich auf die reihenfolge im frameset?
Mein Frameset:

<frameset rows="17%,83%" cols="*" border="0">
<frame name=FrameOben src=FrameOben.htm scrolling=no marginleft="8" marginheight="8" marginwidth="8" noresize>
<frameset rows="*" cols="19%,81%" border="0">
<frame name=FrameLinks src=FrameLinks.htm scrolling=no marginwidth="8" marginheight="0">
<frameset rows="5%,89%,6%" cols="*" border="0">
<frame name=FrameNewsticker src=FrameNewsticker.htm scrolling=no marginwidth="0" marginheight="5" noresize>
<frame name=FrameText src=FrameText.htm marginwidth="8" marginheight="0" scrolling="auto" noresize>
<frame name=FrameSponsoren src=FrameSponsoren.htm scrolling=no marginwidth="8" marginheight="0" noresize>
</frameset>
</frameset>
</frameset>

D.h. wenn ich den Main-Frame ("FrameText") als zu zählen definieren will, dann heißts:
var LastModDate = new Date(parent.frames[4].document.lastModified);
oder?

--> Ist es nicht möglich mehrere Frames einzubeziehen, d.h. EGAL WO etwas an der Seite geändert wurde - der Hinweis wird aktualisiert???
____________________________________
lg
WF
w_fuchs ist offline   Mit Zitat antworten
Alt 17.11.2003, 20:25   #4
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Wie die Zählung genau geht weiß ich nicht, mußt du wohl ausprobieren.
An und für sich sollte man ein Frame auch über parent.NameDesFrames ansprechen könnnen, ob das wirklich geht weiß ich aber nicht.

Zitat:
--> Ist es nicht möglich mehrere Frames einzubeziehen, d.h. EGAL WO etwas an der Seite geändert wurde - der Hinweis wird aktualisiert???
Das geht über einen Vergleich, du schaust einfach welches Datum "das größte"=neueste ist. Ich weiß allerdings nicht, ob man date einfach vergleichen kann.
Im zweifelsfall gets so (falls ich keinen Fehler eingebaut hab):
Code:
function findMaxTime{
 var index=0;
 var maxTime=parent.frames[0].document.lastModified.parse();
 for(int i=0;i<parent.frames.length;i++){
  var newTime=parent.frames[i].document.lastModified.parse();
  if (newTime>maxTime){
   maxTime=newTime;
   index=i;
   }
 }
return i;
}
var letzteAenderung=parent.frames[findMaxTime()].lastModified;
Die Funktion findMinTime läuft alle Frames durch (i=0 bis i=parent.frames.length-1) wenn eine Zeit größer(=neuer) als die aktuelle Zeit ist wird sie in maxTime gespeichert und der index des Frames in index gespeichert. Der Vergleichd er Zeiten erfolgt mittels parse(), das das Datum in Millisekunden seit dem 1.1.1970 zurückgint.
P.S.:Falls was nicht funktioniert, schau mal bei www.teamone.de/selfhtml vorbei, dort ist fast alles erklärt.

Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 17.11.2003, 20:28   #5
w_fuchs
Veteran
 
Registriert seit: 30.04.2001
Alter: 42
Beiträge: 353


w_fuchs eine Nachricht über ICQ schicken
Standard

nur um sicherzugehen: wo bau ich das ein?

Hab schon mal herzlichen Dank für Deine Mühe - hast Dir ja echt viel gedanken gemacht!
____________________________________
lg
WF
w_fuchs ist offline   Mit Zitat antworten
Alt 17.11.2003, 21:02   #6
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Falls es funktioniert musst du den function Teil am Anfang ( vor "function initArray()" ) einbauen. der Teil " var letzteAenderung=parent.frames[findMaxTime()].document.lastModified;" muss ein bischen abgeändert werden (da hat sich ein kleinerFehler eingeschlichen, man muß klarerweise zuerst ein Date Objekt mittels new erzeugen): schreib einfach den Teil nach dem = dort hin wo jetzt "var LastModDate=new Date(document.lastModified);
" steht, so das dortsteht: var LastModDate=new Date(parent.frames[findMaxTime()].document.lastModified);

Falls du ein bischen an den Hintergründen interessiert bist:
Mit der Zeile var LastModDate=new Date(document.lastModified); wird ein neues Objekt vom Typ Date (das macht das Schlüsselwort "new") erzeugt, dem bei der Erzeugung der Wert von document.lastModified zugewiesen wird.
Mit new ruft man den sogenannten Konstruktor einer Klasse auf, dieser "erzeugt"ein neues Objekt. Im einfachsten fall wird mit new KlassenName() ein Objekt vom Typ KlassenName erzeugt, wobei dem Konstruktor keine Parameter übergeben werden. In diesem Fall wird das Objekt mit Standardwerten initialisiert.
Es gibt aber auch Konstruktoren, die man mit Parametern aufrufen kann. Dies geschieht hier: mit "new Date(document.lastModified)" wird der Konstruktor von Date mit dem Parameter "document.lastModified" aufgerufen (document.lastModified ist auch ein Date Objekt).
Im Konstruktor ist jetzt bestimmt "wenn ich mit einem Date Objekt als Parameter aufgerufen werde, so bekommt das Objekt das ich erzeuge den Wert des übergebenen Date Objektes". D.h. das neu erzeugte Objekt hat den selben Wert wie document.lastModified .
(Was ich hier ein bischen naiv formuliert habe heißt in Wirklichkeit überladen und ist ein extrem praktisches Werkzeug).

Ich hoffe es wahr verständlich (und interessant).
Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 17.11.2003, 22:15   #7
w_fuchs
Veteran
 
Registriert seit: 30.04.2001
Alter: 42
Beiträge: 353


w_fuchs eine Nachricht über ICQ schicken
Standard

Thanks a lot

Mein Code schaut jetzt so aus:

Code:

<font size="1"><font face="Verdana, Arial, Helvetica, sans-serif">Aktualisiert 
            am:</font> 

            </font><font size="1" style="bold"> 
            <script language="JavaScript">
		<!-- Hide JavaScript from Java-Impaired Browsers
		// -->
		function initArray()
		{
		this.length = initArray.arguments.length
		for (var i = 0; i < this.length; i++)
		this[i+1] = initArray.arguments[i]
		}
		var DOWArray = new initArray("So","Mo","Di","Mi","Do","Fr","Sa");
		var MOYArray = new initArray("Jan","Feb","März","Apr","Mai","Juni","Juli","Aug","Sept","Okt","Nov","Dez");
		var LastModDate = new Date(parent.frames[4].document.lastModified);
		var Name = navigator.appName;
		
		document.write(DOWArray[(LastModDate.getDay()+1)],", "); 
		document.write(MOYArray[(LastModDate.getMonth()+1)]," "); 
		if ( Name == "Netscape" )
    	{
 		document.write(LastModDate.getDate(),", ",(LastModDate.getYear()+1900)); 
 		}
		else
    	{
    	document.write(LastModDate.getDate(),", ",(LastModDate.getYear())); 
    	}
		</script>
            </font></p>
jetzt scheint gar kein Datum auf...
____________________________________
lg
WF
w_fuchs ist offline   Mit Zitat antworten
Alt 17.11.2003, 23:55   #8
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

Der Teil
Code:
 if ( Name == "Netscape" )
{
document.write(LastModDate.getDate(),", ",(LastModDate.getYear()+1900)); 
}
else
{
document.write(LastModDate.getDate(),", ",(LastModDate.getYear())); 
}
ist IMHO noch Verbesserungswürdig. Nachdem sich der IE nicht an die Sprachspezifikationen hält, musst Du dieses seltsame Konstrukt bauen.
Es geht aber einfacher mit:
Code:
document.write(LastModDate.getDate(),", ",(LastModDate.getFullYear()));
http://devedge.netscape.com/library/...e.html#1193607
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Alt 18.11.2003, 11:45   #9
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

mach mal nach der Zeile var LastModDate = new Date(parent.frames[4].document.lastModified);

ein alert(LastModDate); und schau was er ausgibt.

Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 18.11.2003, 17:25   #10
w_fuchs
Veteran
 
Registriert seit: 30.04.2001
Alter: 42
Beiträge: 353


w_fuchs eine Nachricht über ICQ schicken
Standard

MsgBox kommt
____________________________________
lg
WF
w_fuchs ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:29 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag