Titel: Re: Neuste Version auslesen/abrufen
Hi Asmodiel,
sorry, war die Tage durch ne Menge Action etwas absent und dank der kompetenten Buchhaltung von Freenet zeitweise auch n bissl off. Hatte den Thread hier schon fast vergessen.
Jo, genau daran liegt das Problem. XMLHttpRequest ist an die Domänenrestiktionen des Browser gebunden. Zum Testen kannst Du diese für das Lokale Netz u.U. in den Browsersicherheitseinstellungen aufweichen. Wenn Du das Script auf die selbe HP lädst, sollte es gemäß flüchtigem drüberschauen funktionieren.
Eine andere Variante, die Domänenübergreifend arbeitet wäre, ein JavaScript per Tag nachzuladen.
Hier noch mal ein Beispiel mit beiden Varianten, das Dir auch Statusinformationen/Fehlermeldungen beim XMLHttpRequest liefert.
Die Variante über das Scripttag lädt die Lytebox von Deiner Homepage auch wenn Du sie Lokal ausführst oder auf nem anderen Server hostest.
Code:
/*** js/ajax.js ***/
var http_request = false;
function xmlRequest(url, handler)
{ http_request = false;
handler = handler;
if (window.XMLHttpRequest) // Non-IE
{ http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)
{ //http_request.overrideMimeType('text/xml');
http_request.overrideMimeType('text/plain');
}
}
else if (window.ActiveXObject) // IE
{ try
{ http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{ document.getElementById('debug').innerHTML += e + '<br />n';
try
{ http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) { document.getElementById('debug').innerHTML += e + '<br />n'; }
}
}
if (!http_request)
{ document.getElementById('debug').innerHTML += 'Fehler beim Erzeugen einer XMLHTTP-Instanz<br />n';
return;
}
try
{ http_request.onreadystatechange = handler;
http_request.open('GET', url, true);
http_request.send(null);
}
catch(e) { document.getElementById('debug').innerHTML += e + '<br />n'; }
}
function processRequestData()
{ var debug = document.getElementById('debug');
debug.innerHTML +=
[ 'nicht initialisiert', 'lade', 'geladen', 'interaktiv', 'fertig'][http_request.readyState] ;//+ '<br />n';
debug.innerHTML += '(' + arguments.callee.caller.caller+ ')<br />n';
if (http_request.readyState == 4)
{ if (http_request.status == 200)
return http_request.responseText;
debug.innerHTML += 'Fehler ' + http_request.status + ': ' + http_request.statusText;
}
return false; // noch keine Daten
}
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" href="http://asmodiel.de/templates/round/css/lytebox.css" type="text/css" media="screen" />
<script id="dynscript" type="text/javascript" language="javascript"
onload="onLoadLytebox();"></script>
<script language="JavaScript" src="js/ajax.js"></script>
<script>
// callback für XMLHttpRequest
function Ausgabe(test)
{ if ((result = processRequestData()) !== false)
document.getElementById('Ausgabe').innerHTML = result;
}
// Laden über das Script Tag
function loadLytebox()
{ var js = document.getElementById('dynscript');
js.onload = function ()
{ initLytebox();
document.getElementById('lyteboxlink').innerHTML = 'Script testen';
// initLytebox() überschreibt onclick des Links; für andere Scripte ist ggf. das onclick-Event zu löschen, da es return false zurückliefert.
};
js.src='http://asmodiel.de/js/lytebox.js';
}
</script>
</head>
<body>
<noscript>Javascript erforderlich</noscript>
<h1>AJAX</h1>
Version: <span id="Ausgabe"></span><br />
<button onclick="new xmlRequest('http://asmodiel.as.funpic.de/upv2_v_update.php', Ausgabe)">Version - XMLRequest</button><br />
domänenübergreifend:<br />
<a id="lyteboxlink" href="http://www.google.com" rel="lyteframe" title="Search Google"
rev="width: 400px; height: 300px; scrolling: no;" onclick="loadLytebox();return false">Script laden</a>
<div id="debug">DEBUG:<br /></div>
</body>
</html>
LG Helge
EDIT:
Ich konnte den Code jetzt nur auf Mozilla Engines testen. Ein Feedback über das Verhalten in IE, Opera und Safari wär mal interessant.
Da die Lösung des Problems doch eher in Richtung AJAX geht, mein Vorschlag:
Thread verschieben in den JavaScript-Bereich
Zuletzt bearbeitet von QuasimodosKlon am 07.09.2008 um 14:59:45 Uhr
_______________________________
Klarer Verfechter der alten Rechtschreibung!
Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Und das nennen sie dann ihren Standpunkt.
Albert Einstein
|