Frage

Ich habe gelesen, dass Sie nicht die HTML eines anderen Rahmens lesen kann, wenn dieser Rahmen auf einer anderen Domäne befindet. Gibt es eine Möglichkeit, dies in Javascript zu tun? Ich weiß, diese Einschränkung zu Sicherheitszwecken ist aber meine Anwendung ist legitim.

Viele Grüße

Peter

War es hilfreich?

Lösung

Sprechen wir über eine hier iFrame? Wenn ja, könnten erhalten Sie nicht das src-Attribut des iFrame (jQuery?) Und eine Ajax-Anforderung initiieren, die die Seite zurückkehren würden, oder gibt vielleicht das src-Attribut auf ein eigenes Skript (PHP / ASP, was auch immer), die CURL verwendet die aufzulesen Informationen Sie nach?

Andere Tipps

Ja, Sie können auf jeden Fall den Inhalt des Rahmens lesen Cross-Domain-Proxy verwenden. Im Wesentlichen müssen Sie ein serverseitiges Skript erstellen, die die src URL des Rahmens in Frage anfordert. Auf der Client-Seite, fordern Sie das Skript anstelle der src URL (die auf einer anderen Domäne ist und dadurch unterliegt Sicherheitseinschränkungen innerhalb des Browsers), in der src-URL als Parameter übergeben.

Server-Skript

Das folgende ist ein Beispiel mit PHP cURL.

<?php

$target = $_REQUEST['t'];
if (empty($target)) { die 'no url provided'; }

$useragent="Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$res = curl_exec($ch);
curl_close($ch);

echo $res;

?>

Client-seitiges Script

Auf Ihrer Seite, verwenden Sie die folgende JavaScript-Funktion, um den HTML-Code des Zielrahmen zurückzukehren

    var URL = top.frames.(YOUR FRAME NAME HERE).location;

var xh = null;
if (window.XMLHttpRequest) {
  xh = new XMLHttpRequest();
} else if (window.ActiveXObject) {
  xh = new ActiveXObject("Microsoft.XMLHTTP");
} else {
  alert("Your browser does not support XMLHTTP.");
  return false;
}

var ret = null;
xh.onreadystatechange = function() { 
  if (xh.readyState == 4 && xh.status == 200) {
    // do whatever you want with the html here
    ret = xh.responseText;
  }
}
xh.open("GET", url, false);
xh.send(null);

Lassen Sie mich wissen, ob dies für Sie arbeitet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top