Auf einzelne DOM Element fremder Webseiten zugreifen
Kai Küper
- javascript
Hallo zusammen,
ich versuche von einer fremden Webseite bestimmte Elemente auf einer lokalen Webseite anzeigen zu lassen. Als Test habe ich eine Webseite der Form:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Titel</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p>Hallo zusammen</p>
<p>Wie isset denn so</p>
<p>juhuuuuu</p>
</body>
</html>
Nun versuche ich per XMLHttpRequest und http_request.responseXML.documentElement die einzelnen p Elemente und den title auszulesen ... klappt aber leider nicht ... immer lautet der Fehler im Firefox: http_request.responseXML.documentElement has no properties um im IE:
.... ist null oder kein Objekt. :-(
Hoffentlich weis eine Rat!!
Das Skript:
<script type="text/javascript" language="javascript">
var http_request = false;
function makeRequest(url) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
http_request.onreadystatechange = alertContents;
http_request.open('GET', url, true);
http_request.send(null);
}
function alertContents() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
var xmldoc = http_request.responseXML.documentElement
var root_node = xmldoc.getElementsByTagName('p')[0].firstChild.data;
alert("root_node1:"+root_node);
var root_node = xmldoc.getElementsByTagName('p')[1].firstChild.data;
alert("root_node2:"+root_node);
var root_node = xmldoc.getElementsByTagName('title')[0].firstChild.data;
alert("root_node3:"+root_node);
}
else {
alert("xmldoc ist leer");
}
} else {
alert('There was a problem with the request.');
}
}
}
</script>
Vielen Dank,
Kai Küper
Hi,
Hoffentlich weis eine Rat!!
Resource (durchleitenderweise) mit einer serverseitigen Scriptsprache (z.B. PHP) anfordern, oder eine servereigenen Proxyfunktion verwenden (mod_proxy).
Ansonsten: No way! JS kann nur auf eigene Domains zugreifen.
Gruß, Cybaer
Hi,
ich versuche von einer fremden Webseite [...]
Nun versuche ich per XMLHttpRequest und http_request.responseXML.documentElement die einzelnen p Elemente und den title auszulesen ...
Auch für AJAX gilt m.W. die Same-Origin-Policy.
cu,
Andreas
Hallo Kai.
Als Test habe ich eine Webseite der Form:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
Nostalgiker?
Einen schönen Dienstag noch.
Gruß, Mathias