Läuft im Fox aber net IE
leinad
- javascript
Erstmal servus, hab da ein Problem was mich langsam zur Verzweifelung bringt! Ich habe eine Seite erstellt die aus einem Bild besteht. Dieses Bild ist durch geschachtelte Tabellen in einzelne Bereiche unterteilt. Bei einem MouseOver soll sich nun ein Container öffnen der Inhalte aus einer XML empfängt. Dieser Container soll in einem bestimmten Abstand neben der aktuellen Mauszeigerposition erscheinen. Die Position de Zeigers wird quasi die ganze Zeit beobachtet und das Panel wird immer neu erzeugt. Im Firefox läuft es alles wunderbar aber sobald ich es im IE laufen lassen wird das Panel unter dem Bild und nicht "darüber" erstellt! Das ganze versuch ich mit Ajax hinzu basteln. Als Vorlage der JScript Datei habe ich eine Bericht in der CT genommen. Bin echt Hilflos da ich schon ,wie ich meine, alles ausprobiert hab.
Hier mal der Quelltext vielleicht bemerkt ja einer von euch den Fehler:
JS: var spans = document.getElementsByTagName("span");
function init(){
if (!spans) return false; for (var i = 0; i < spans.length; i++) { var span = parseInt(spans[i].getAttribute('id')); if (span != null && !isNaN(span)) { spans[i].onmousemove = new Function("ereignis","komSt.position_ermitteln(ereignis);anzeigen("+span+");"); } } }
function anzeigen(nr){ // erzeugt das popup und holt die Inhalte this.schliessen(nr); document.getElementsByTagName("body")[0].appendChild(komSt.erzeugen(nr)); for (var i = 0; i < spans.length; i++) { var span = spans[i].getAttribute('id'); if(span == nr){ spans[i].firstChild.style.backgroundColor = "#FFFF00"; komSt.fussnotenueber.nodeValue = spans[i].firstChild.name; } } komSt.holen(nr); }
function schliessen(nr){ for (var i = 0; i < spans.length; i++) { var span = spans[i].getAttribute('id'); if(span == nr){ spans[i].firstChild.style.backgroundColor = "#FFFFFF"; } } komSt.stopp(); if(komSt.panel){ komSt.schliessen(); } }
// PopUp Objekt var komSt = { // Die Fußnote soll von außen zugänglich sein: panel: null, // DIV-panel fussnotenvorspann: null, // Überschrift-Vorspann fussnotenueber: null, // Überschriftentext fussnotenabsatz: null, // Absatz für Fussnotentext ajax: false, // XMLHttpRequest-Objekt mausX: 0, // horizontale und ... mausY: 0, // vertikale Mausposition div_breite: 300, // Breite und ... div_hoehe: 130, // Höhe abstandX: 10, // horizontaler und ... abstandY: 5, // vertikaler Abstand von Mauszeiger rollX: 0, // horizontale und ... rollY: 0, // vertikale Scrollposition
erzeugen: function(nr) { // wird bei jedem Aufruf neu erzeugt.
komSt.panel = document.createElement("div"); komSt.panel.id = "leitstand"; komSt.panel.style.width = komSt.div_breite + "px"; komSt.panel.style.height = komSt.div_hoehe + "px";
var pos_x = (komSt.div_breite + komSt.abstandX > window.innerWidth)? 1: komSt.mausX + komSt.abstandX; // rechts von Mauszeiger
var pos_y = (komSt.div_hoehe + komSt.abstandY > komSt.mausY)? 1 : //maximaler abstand zmausXum oberen Fensterrand komSt.mausY - komSt.div_hoehe - komSt.abstandY; //über
komSt.panel.style.left = komSt.rollX + pos_x + "px"; komSt.panel.style.top = komSt.rollY + pos_y + "px";
// Überschrift komSt.fussnotenueber = document.createTextNode(document.getElementsByTagName("img")[0].name);
komSt.titel = document.createElement("p"); komSt.titel.setAttribute("class","klein"); komSt.titel.appendChild(komSt.fussnotenueber);
// Link zum Schliessen
komSt.fussnotenabsatz = document.createElement("p"); // zusammensetzen
komSt.panel.appendChild(komSt.titel); komSt.panel.appendChild(komSt.fussnotenabsatz); // Ereignis registrieren
komSt.anfasser = komSt.titel; komSt.anfasser.onmousemove = komSt.ziehen_vorbereiten; komSt.anfasser.style.cursor = "move"; // zurückgeben return komSt.panel; },
holen: function(nr) { // Ajax-Verbindung herstellen try { // W3C-Standard komSt.ajax = new XMLHttpRequest(); } catch(w3c) { try { // Internet Explorer komSt.ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch(msie) { try { // Internet Explorer alt komSt.ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch(msie_alt) { alert("Ihr Browser kann keine Kommissionierungsstellen anzeigen."); return false; // !!! Link auf XML-Dokument } } } // Datei anfordern (asynchron) komSt.ajax.open('GET', './data/leit.xml', true); komSt.ajax.setRequestHeader('Content-Type', 'text/xml'); // umgeht Internet Explorers Caching von GET-Anfragen komSt.ajax.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT'); komSt.ajax.send(null); // nach Status-Ãnderungen der Verbindung // werden die empfangenen Inhalte geparst komSt.ajax.onreadystatechange = function() { // wenn Datei komplett empfangen ist ... if (komSt.ajax.readyState == 4) { // Dokument nicht gefunden (Code 0 für lokale Tests): if (komSt.ajax.status != 200 && komSt.ajax.status != 0) { komSt.fussnotenabsatz.firstChild.nodeValue = "Kommissionsierungsstellen-Datei konnte nicht gefunden werden!"; return false; }
var kss = komSt.ajax.responseXML.getElementsByTagName("kostenstelle"); var passt = false // Eine Schleife sucht nach der nummer for(var i = 0; i < kss.length; i++) { if (kss[i].getElementsByTagName("id")[0].firstChild.nodeValue == nr){ komSt.fussnotenabsatz.appendChild(document.createTextNode("Name: ")); komSt.fussnotenabsatz.appendChild(kss[i].getElementsByTagName("name")[0].cloneNode(true)); komSt.fussnotenabsatz.appendChild(document.createElement("br")); komSt.fussnotenabsatz.appendChild(document.createTextNode("1.Zahl: ")); komSt.fussnotenabsatz.appendChild(kss[i].getElementsByTagName("zahl1")[0].cloneNode(true)); komSt.fussnotenabsatz.appendChild(document.createElement("br")); komSt.fussnotenabsatz.appendChild(document.createTextNode("2.Zahl: ")); komSt.fussnotenabsatz.appendChild(kss[i].getElementsByTagName("zahl2")[0].cloneNode(true)); komSt.fussnotenabsatz.appendChild(document.createElement("br")); komSt.fussnotenabsatz.appendChild(document.createTextNode("3.Zahl: ")); komSt.fussnotenabsatz.appendChild(kss[i].getElementsByTagName("zahl3")[0].cloneNode(true));
return true;
} } var net_da = document.createTextNode("Kommissionierungsstelle " + nr + " wurde nicht gefunden!"); komSt.fussnotenabsatz.appendChild(net_da); return false; } } },
schliessen: function() { try{ document.getElementsByTagName("body")[0].removeChild(komSt.panel); komSt.panel = null; }catch(irgendwas){
} },
ziehen_vorbereiten: function(ereignis) {
if (!ereignis) var ereignis = window.event; komSt.position_ermitteln(ereignis); document.onmousemove = komSt.ziehen; document.onmouseup = komSt.stopp; },
position_ermitteln: function(ereignis) { // ermittelt die Position des Mauszeigers // (Pixel von der linken oberen Fensterecke) if (!ereignis) var ereignis = window.event; komSt.mausX = ereignis.clientX; komSt.mausY = ereignis.clientY; komSt.roll(); // Safari rechnet clientX/Y vom Dokumentenanfang aus if (komSt.mausX > komSt.rollX && komSt.rollX >= document.documentElement.clientX) komSt.mausX -= komSt.rollX; if (komSt.mausY > komSt.rollY && komSt.rollX >= document.documentElement.clientY) komSt.mausY -= komSt.rollY; },
roll: function() { // Gibt die horizontale oder vertikale Scroll-Verschiebung zurück if (isFinite(self.pageYOffset)) { // DOM komSt.rollX = self.pageXOffset; komSt.rollY = self.pageYOffset; } else if (isFinite(document.documentElement && document.documentElement.scrollTop)) { // IE neu komSt.rollX = document.documentElement.scrollLeft; komSt.rollY = document.documentElement.scrollTop; } else if (isFinite(document.body.scrollTop)) { // IE alt komSt.rollX = document.body.scrollLeft; komSt.rollY = document.body.scrollTop; } },
ziehen: function(ereignis) { / if (!ereignis) var ereignis = window.event;
document.onmousedown = komSt.stopp; // 1.) aktuelle Position ermitteln var kastenX = parseInt(komSt.panel.style.left.slice(0,-2)); var kastenY = parseInt(komSt.panel.style.top.slice(0,-2)); // 2.) alte Mausposition speichern var mausX_alt = komSt.mausX; var mausY_alt = komSt.mausY; // 3.) neue Mausposition ermitteln komSt.position_ermitteln(ereignis); // 4.) um die Differenz verschieben komSt.panel.style.left = kastenX + komSt.mausX - mausX_alt + "px"; komSt.panel.style.top = kastenY + komSt.mausY - mausY_alt + "px"; },
stopp: function() {
document.onmousemove = null; document.onmouseup = null;
if (document.onmousedown) {
document.onmousedown = null; komSt.anfasser.onmousedown = komSt.ziehen_vorbereiten; } }
};
function klonen(quelle, ziel) { for(var i = 0; i < quelle.childNodes.length; i++) { var knoten = quelle.childNodes[i]; switch (knoten.nodeType) { case 1: var neu = ziel.appendChild(document.createElement(knoten.nodeName)); for (var j = 0; j < knoten.attributes.length; j++) { neu.setAttribute(knoten.attributes[j].nodeName, knoten.attributes[j].nodeValue); } klonen(knoten, neu); break; case 3: subknoten = document.createTextNode(knoten.nodeValue); ziel.appendChild(subknoten); } } }
window.onload = init;
Html: <html> <head> <!-- saved from url=(0013)about:internet --> <script type="text/javascript" src="Style/popup.js"></script> <link rel="stylesheet" type="text/css" href="Style/popup.css" /> </head> <body>
<TABLE cellpadding="0" cellspacing="0" border="0" > <TR> <TD> <TABLE cellpadding="0" cellspacing="0" border="0" > <TR> <TD><IMG SRC="images/Buero/bue_1_2.jpg" WIDTH=154 HEIGHT=36></TD> <TD><IMG SRC="images/Buero/bue_2_2.jpg" WIDTH=300 HEIGHT=36></TD> <TD><IMG SRC="images/Buero/bue_3_2.jpg" WIDTH=146 HEIGHT=36></TD> </TR> <TR> <TD><IMG SRC="images/Buero/bue_4_2.jpg" WIDTH=154 HEIGHT=235></TD> <TD> <TABLE cellpadding="0" cellspacing="0" border="0" > <TR> <TD><span id="1" onMouseOut="javascript:schliessen('1');"><IMG name="eins" SRC="images/CD1/CD1_1_1.gif" WIDTH=36 HEIGHT=63></span></TD> <TD><span id="2" onMouseOut="javascript:schliessen('2');"><IMG name="zwei" SRC="images/CD1/CD1_2_1.gif" WIDTH=17 HEIGHT=63></span></TD> <TD><span id="3" onMouseOut="javascript:schliessen('3');"><IMG name="drei" SRC="images/CD1/CD1_3_1.gif" WIDTH=74 HEIGHT=63></span></TD> <TD><span id="4" onMouseOut="javascript:schliessen('4');"><IMG name="vier" SRC="images/CD1/CD1_4_1.gif" WIDTH=38 HEIGHT=63></span></TD> <TD><span id="5" onMouseOut="javascript:schliessen('5');"><IMG name="fünf" SRC="images/CD1/CD1_5_1.gif" WIDTH=95 HEIGHT=63></span></TD> <TD><span id="6" onMouseOut="javascript:schliessen('6');"><IMG name="sechs" SRC="images/CD1/CD1_6_1.gif" WIDTH=40 HEIGHT=63></TD> </TR>
.... usw
hi,
Bin echt Hilflos da ich schon ,wie ich meine, alles ausprobiert hab.
Wenn dein "alles Ausprobieren" darin besteht, deinen Code hier abzuladen - dann kann dir vermutlich kaum jemand weiterhelfen.
Es ist nicht mal ein rudimentärer Ansatz einer Fehleranalyse deinerseits zu erkennen.
gruß,
wahsaga
Hello out there!
Dieses Bild ist durch geschachtelte Tabellen in einzelne Bereiche unterteilt.
Was soll dieser Unsinn?
Du kennst <http://de.selfhtml.org/html/grafiken/verweis_sensitive.htm@title=verweis-sensitive Grafiken (Image Maps)>?
See ya up the road,
Gunnar