Netscape-spez. Funktion?
TommyR
- javascript
Grüssle Leutz,
ich hab mal ein kleines problemschen und zwar müsste ich wissen ob es für Netscape eine Funktion gibt, die mir das aktuelle aktive HTML-Element zurück gibt.. (wie beim MSIE die Funktion "event.srcElement")
und mein zweites Problem ist:
ich möchte (falls es eine wie o.g. Funktion nicht gibt) ein Skript so aufrufen..
[script]
for(j=0; j < document.getElementsByTagName("a").length; j++) {
link = document.getElementsByTagName("a");
link[j].onmouseover = fadeIn_ns;
link[j].onmouseout = fadeOut_ns;
}
[/script]
allerdings muss ich den Funktionen fadeIn_ns und fadeOut_ns jeweils eine Variable mit übergeben.. wie kann ich das realisieren?
MfG
Tommy
Hi,
ich hab mal ein kleines problemschen und zwar müsste ich wissen ob es für Netscape eine Funktion gibt, die mir das aktuelle aktive HTML-Element zurück gibt.. (wie beim MSIE die Funktion "event.srcElement")
im MSIE ist es document.activeElement
event.srcElement steht nur bei Events zur Verfügung.
Nach DOM ist es
e.currentTarget oder
e.target
wobei e das event-objekt ist, das der Funktion implizit übergeben wurde.
musste mal ausprobieren
ich machs immer so:
function beispiel(ev)
{
var e = (ev) ? ev : event;
alert(this.tagName); // z.B. "A"
}
das aktuelle Objekt (das diese Funktion aufruft) kannst du auch einfach mit "this" ansprechen. dann brauchst du auch keine Fallunterscheidung, und auch kein srcElement.
dann haste in e sowohl das MSIE-Event-Objekt als auch das DOM event objekt.
[script]
for(j=0; j < document.getElementsByTagName("a").length; j++) {
link = document.getElementsByTagName("a");
link[j].onmouseover = fadeIn_ns;
link[j].onmouseout = fadeOut_ns;
}
[/script]
nimm vielleicht lieber document.links, das findet nur die <a> mit href=""
(das soll wohl hier gemeint sein) und läuft dann auch unter NS 4.
eine Variable kannst du zwar nicht übergeben, aber du kannst sie als eigenschaft ans Objekt hängen. so mach ich das immer.
machs so:
for(j=0; j < document.links.length; j++) {
document.links[j].meineEigenschaft = "Parameter";
document.links[j].onmouseover = fadeIn_ns;
document.links[j].onmouseout = fadeOut_ns;
}
function fadeIn_ns(e)
{
var e = (ev) ? ev : event;
alert(this.meineEigenschaft); // --> "Parameter"
// ...
}
Gruß
Christian
Danke ^_^ hat geklappt
MfG Tommy
Weis jemand warum mein FadeScript unter Netscape nicht richtig Funktioniert?? (Unter NS und OP funktioniert es nur wenn ich HTML 4.0 verwende.. allerdings basiert meine Page auf XHTML 1.0 Trans.) d.h.: ich muss DOCTYPEDEF und DOCTYPEDEC weglasse und es funktionier.. aber nicht mit den Angaben..
[script]
/* Diese Farben sind für Netscape und Opera, da diese die deHexize-Funktion nicht unterstuetzen */
//priFade
colors = new Array("ffffff", "D2CFC2", "B2AE97", "999476", "827C56", "70693F", "5E5626", "5E5626", "70693F", "827C56", "999476", "B2AE97", "D2CFC2", "ffffff")
//secFade
altColors = new Array();
/* MSIE Farben... */
fadeInColor = "#5E5626"; //priFade
fadeOutColor = "#ffffff"; //priFade
altInColor = ""; //secFade
altOutColor = ""; //secFade
/* Variablen ersetzen */
//fadeInColor = dehexize(fadeInColor.toLowerCase());
//fadeOutColor = dehexize(fadeOutColor.toLowerCase());
//altInColor = dehexize(white_fadeColor.toLowerCase());
//altOutColor = dehexize(white_outColor.toLowerCase());
/* Farb-Details festlegen */
speed = 100;
stepIn = colors.length * 2; //def. 35
stepOut = colors.length * 2; //def. 35
/* sonst. Variablen */
var brwsr;
var fadeId = new Array();
var elementDoc, elementTag, elementClass, elementUID;
var timerID;
autofade = 1;
colorNum =0;
var obj;
/* Event-Handler */
//document.onmouseover = fadeIn_ns;
//document.onmouseout = fadeOut_ns;
/* welcher Browser? MSIE? NS/MOZ? OP? LYNX? KONQUEROR? */
function detectBrowser() {
browserName = navigator.appName;
browserVers = navigator.appVersion;
browserInfo = navigator.userAgent.toLowerCase();
if (browserInfo.indexOf("opera") == -1 && browserName=="Microsoft Internet Explorer") {
brwsr = "MSIE"; //Internet Explorer
} else {
if (browserInfo.indexOf("opera") != -1) {
brwsr = "OP"; //Opera
} else {
if ((browserInfo.indexOf("mozilla") != -1) && ((browserInfo.indexOf('spoofer') == -1) && (browserInfo.indexOf('compatible') == -1))) {
brwsr = "MOZ"; //Mozilla und Netscape
} else {
if (browserName=="Konqueror") {
brwsr = "kon"; //Konqueror
} else {
brwsr = "lynx"; //Lynx oder andere???
}
}
}
}
}
function fade_ns(xmp) {
obj = xmp;
if (autofade==1) {
if (colorNum<=colors.length-1) {
obj.style.color=colors[colorNum];
colorNum++
timerID = setTimeout("fade_ns(obj)", speed);
} else {
colorNum = 0;
timerID = setTimeout("fade_ns(obj)", speed);
}
} else {
clearTimeout(timerID);
}
}
function fadeIn_ns() {
clearTimeout(timerID);
autofade = 1;
fade_ns(this);
}
function fadeOut_ns() {
clearTimeout(timerID);
this.style.color = fadeOutColor;
autofade = 0;
}
[/script]
[script]
//<!--
//<![CDATA[
for(j=0; j < document.getElementsByTagName("a").length; j++) {
link = document.getElementsByTagName("a");
link[j].onmouseover = fadeIn_ns;
link[j].onmouseout = fadeOut_ns;
}
//]]>
//-->
[/script]
Weis jemand warum mein FadeScript unter Netscape nicht richtig Funktioniert??
Das kenn ich. du musst bei XHTML sehr korrekt schreiben.
z.B. darfst du nicht schreiben:
element.style.top = 50;
sondern:
element.style.top = "50px";
(würde allerdings nicht unter Opera 5 und soweit ich weiß auch nicht unter IE 4 funzen, da diese da immer einen reinen Integer haben wollen).
ich vermute in deinem Skript ist es die Farbangabe:
obj.style.color=colors[colorNum];
das "#"-Zeichen fehlt! und muss nach den Standarddefinitionen nunmal da hin!
versuchs mal mit:
obj.style.color="#"+colors[colorNum];
Gruß
Christian
Jo danke, auch das hat gefuntzt..
man bin ich schlecht.. *peinlich*
MfG Tommy