Kai Küper: Auf einzelne DOM Element fremder Webseiten zugreifen

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

  1. 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

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. 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

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. 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

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    debian/rules