Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 16.01.2008, 22:35   #1
TP-Member
 
Benutzerbild von !duesi
 
Registriert seit: Apr 2005
Ort: der schönen Schweiz
!duesi macht alles soweit korrekt

createAttribute.nodeValue <=> IE / FF / Opera unterschiedliche Darstellung


Hallo zusammen

Ich möchte mit Ajax für unsre Community einen Tooltip generieren, welcher aufklappt, wenn man mit der Maus über den Usernamen fährt.

Nun hab ich mir folgenden Code zusammengebastelt.
Lustig ist, dass er im Firefox problemlos funktioniert (onmouseover und out), im Opera funktioniert nur onMouseOver und im IE geht gar nix (Fehlermeldung: "Mitglied nicht gefunden" und er meint damit die Style-Attribute).

Code:
echo '<a id="userbox_' . $goresult['userID'] . '" href="" onMouseOver="userbox(\'userbox_' . $goresult['userID'] . '\');" onMouseOut="hideUserbox(\'userbox_' . $goresult['userID'] . '\');">' . $goresult['userID'] . '</a> ';
Code:
function userbox(Box) {
	var point = { x: 0, y: 0 };
	
	if(Box) {
		var element = document.getElementById(Box);
		while (element && element.tagName.toUpperCase() != 'BODY') {
			point.x += element.offsetLeft;
			point.y += element.offsetTop;
			element = element.offsetParent;
		}
	}
	var myDiv = document.createElement('div');
	var myText = document.createTextNode('Test');
	
	var myStyle = document.createAttribute('style');
	var Left = point.x - 150;
	var Top = point.y + 5;
	myStyle.nodeValue = "position:absolute;left:" + Left + "px;top:" + Top +"px;width:100px;background-color:#CCC;display.block;";
	myDiv.setAttributeNode(myStyle);
	
	var myId = document.createAttribute('id');
	myId.nodeValue = "box_" + Box;
	myDiv.setAttributeNode(myId);
	
	myDiv.appendChild(myText);
	
	var myAusgabebereich = document.getElementById("content");
	myAusgabebereich.appendChild(myDiv);
}

function hideUserbox(Box) {
	var Id = "box_" + Box;
	document.getElementById(Id).style.display = "none";
}
Ist das ein Fehler von mir oder vom IE?
__________________
Ich bremse nicht für Frontpage-Benutzer

kra.ch - eventportal and more
!duesi ist offline   Mit Zitat antworten


Alt 18.01.2008, 11:02   #2
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
ich vermute das es an createAttribute('style') liegt.
Das wird DOM nicht mitbekommen, daher würde ich style so setzen:

Code:
myDiv.style.position = 'absolute';
etc.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 18.01.2008, 13:46   #3
TP-Member
 
Benutzerbild von !duesi
 
Registriert seit: Apr 2005
Ort: der schönen Schweiz
!duesi macht alles soweit korrekt
OK Danke, das hat geholfen.

Nun hab ich aber ein weiteres Problem:
Ich möchte die Userbox wieder ausblenden, wenn der User sich mit der Maus nicht mehr in der Box befindet (+500 Milisekunden)

Code:
// **** Userbox ausblenden *****
function hideUserbox(Box) {
	var ev = window.event;
	var left	= ev.offsetX;
	var top		= ev.offsetY;
	
	var boxLeft = pos(Box).x;
	var boxTop = pos(Box).y;
	
	while (ev) {
		if (left < boxLeft && top < boxTop) {
			warten(500);
			var Id = "box_" + Box;
			document.getElementById(Id).style.display = "none";
			document.getElementById("content").removeChild(document.getElementById(Id));
		}
	}
}
Aber irgendwas funktioniert nicht :s
Ich vermute, er kann nicht überprüfen, wo sich die Maus befindet, respektive ob die Maus noch in der Box ist...
__________________
Ich bremse nicht für Frontpage-Benutzer

kra.ch - eventportal and more
!duesi ist offline   Mit Zitat antworten
Alt 25.01.2008, 18:15   #4
TP-Member
 
Benutzerbild von !duesi
 
Registriert seit: Apr 2005
Ort: der schönen Schweiz
!duesi macht alles soweit korrekt
hmm gibts irgendwie die Möglichkeit
Code:
if (document.getElementById(id).onmouseout) { //...
zu machen? Hab zu Eventhandlern nur die HTML Form gefunden...
__________________
Ich bremse nicht für Frontpage-Benutzer

kra.ch - eventportal and more
!duesi ist offline   Mit Zitat antworten
Alt 25.01.2008, 20:01   #5
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
schau Dir den Eventhandler mal genauer an, z.B.
http://www.mediaevent.de/javascript/onmouseout.html
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 25.01.2008, 23:38   #6
TP-Member
 
Benutzerbild von !duesi
 
Registriert seit: Apr 2005
Ort: der schönen Schweiz
!duesi macht alles soweit korrekt
Super vielen Dank!

Jetzt hab ich nur noch n logisches Problem. Und zwar schliesst die Box jetzt zwar, wenn ich mit der Maus in der Box war. Wenn ich aber aus dem Link rausfahre, ohne in die Box zu gehen, sollte sie auch schliessen. Aber eben nur wenn ich aus dem Link rausfahre, und nicht in die Box gehe...
__________________
Ich bremse nicht für Frontpage-Benutzer

kra.ch - eventportal and more
!duesi ist offline   Mit Zitat antworten
Alt 26.01.2008, 00:02   #7
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Du kannst einen Timer beim Verlassen des Links starten (zum Schliessen der Box), der gestoppt wird, wenn Du in die Box gehst.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 18.02.2008, 17:08   #8
TP-Member
 
Benutzerbild von !duesi
 
Registriert seit: Apr 2005
Ort: der schönen Schweiz
!duesi macht alles soweit korrekt
Irgendwie steh ich auf dem Schlauch

Code:
function hideUserbox(Box) {
	var Id = "box_" + Box;
	
	document.getElementById(Box).onmouseout = function(event) {
		var sDate = new Date();
		var sMsec = sDate.getTime();
		do {
			eDate = new Date();
			eMsec = eDate.getTime();
		} 
		while ((eMsec - sMsec) < 500);
		
		if ((eMsec - sMsec) > 500 && !document.getElementById(Id).onmouseover) {
			document.getElementById(Id).style.display = "none";
			document.getElementById("content").removeChild(document.getElementById(Id));
		}
	}
	
	document.getElementById(Id).onmouseout = function(event) {
		warten(500);
		document.getElementById(Id).style.display = "none";
		document.getElementById("content").removeChild(document.getElementById(Id));
	}
}
__________________
Ich bremse nicht für Frontpage-Benutzer

kra.ch - eventportal and more
!duesi ist offline   Mit Zitat antworten
Alt 19.02.2008, 19:06   #9
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Deine Timer sind so verkehrt.

Hier ein Beispiel:
Code:
onmouseover="window.clearTimeout (tout);" 
onmouseout="tout=window.setTimeout('hideLayer(20071219)',5000)"
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 19.02.2008, 22:44   #10
TP-Member
 
Benutzerbild von !duesi
 
Registriert seit: Apr 2005
Ort: der schönen Schweiz
!duesi macht alles soweit korrekt
Hm dankeschön.

Ich hatte jetzt bereits die verschiedensten Kombinationen. Die erfolgreichste davon war, dass die Box zuklappte, wenn man den Link verlässt, OHNE auf die Box zu gehen, aber aufbleibt, wenn man auf die Box geht.
Nur beim Verlassen der Box schloss sie nich...

Und nun hab ich angeblich einen Syntaxerror bei Zeile 3.


Code:
function hideUserbox(Box) {
	var Id = 'box_' + Box;
	window.setTimeout("hideTimer()", 500);
	
	function hideTimer() {
		if (document.getElementById(Id).onmouseover) {
			window.clearTimeout();
			
			if (document.getElementById(Id).onmouseout) {
				warten(500);
				hideBox(Id);
			}
		}
		else {
			hideBox(Id);
		}
	}
	
	function hideBox(Id) {
		document.getElementById("content").removeChild(document.getElementById(Id));
	}
}
Firebug meldet: "hideTimer is not defined" und IE "Syntaxfehler"...
__________________
Ich bremse nicht für Frontpage-Benutzer

kra.ch - eventportal and more
!duesi ist offline   Mit Zitat antworten
Alt 19.02.2008, 23:38   #11
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Du kannst keine function in einer function definieren!
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 20.02.2008, 00:11   #12
TP-Member
 
Benutzerbild von !duesi
 
Registriert seit: Apr 2005
Ort: der schönen Schweiz
!duesi macht alles soweit korrekt
Und die Moral von der Geschicht'? PHP Programmiere sollten sich nicht an JavaScript wagen

Hier noch der funktionierende Code:
Code:
function hideUserbox(Box) {
	timer = window.setTimeout("hideBox()", 500);
	
	document.getElementById("box_auf").onmouseover = function(event) {
		window.clearTimeout(timer);
	}
	document.getElementById("box_auf").onmouseout = function(event) {
		window.clearTimeout(timer);
		warten(500);
		hideBox();
	}
}	
function hideBox() {
	document.getElementById("content").removeChild(document.getElementById("box_auf"));
}
__________________
Ich bremse nicht für Frontpage-Benutzer

kra.ch - eventportal and more
!duesi ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > HTML Puristen > Javascript
createAttribute.nodeValue <=> IE / FF / Opera unterschiedliche Darstellung createAttribute.nodeValue <=> IE / FF / Opera unterschiedliche Darstellung
« einzelne spalte einer Tabelle löschen | DIV Anordnung per Drag and Drop tauschen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:04 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67