jak zjistit URL stránky v iframe (cross-domain)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Sonic
Člen | 6
+
0
-

Ahoj,
už pár dní řeším celkem palčivý problém.
Na svůj web example.com načtu (např. do iframe) jinou stránku – např. amazon.com.
V tomto iframe si uživatel vybere některý produkt (tzn. načtený web musí fungovat správně včetně skriptů) a o něco výše nad iframem na mé stránce si klikne na tlačítko, které zjistí aktuální URL, která je např. amazon.com/product/id/1234
Nejprve jsem zkoušel procházet DOM načteného webu (více by se mi totiž hodily určitá data přímo z vygenerovaného webu), avšak tam mě prohlížeč nepustí (protože je to cross-domain) – security reason. jQuery.contents() se tu použít nedá. Pak jsem si říkal, že tedy alespoň ta aktuální URL by se hodila. (web amazon jsem dal pouze jako příklad, takže prosím nenavrhujte používání amazon api apod.)
Kromě iframe jsem zkoušel také <object>, avšak výsledek byl podobný.
Zatím jsem nenašel způsob, jak toto udělat.

Jediné, co mě napadá je napsat si nějaký wrapper a tahat to přes cURL – avšak weby jsou plné skriptů a zAJAXované, takže tomuto řešení moc nevěřím, že bude dobře fungovat.
Minulý týden jsem narazil i na nějaký code-injector – tzn. web bych si načetl např. do nějakého modálu a při načítání bych tam propašoval svůj kód – ale příliš nevěřím, že by to mohlo fungovat cross-domain.
Nebo napsání nějakého java appletu? Ale to zas nebude veselé s podporou mobilních browserů …

Díky za všechny nápady!

sadamek
Člen | 16
+
0
-

Ahoj, sice netuším k čemu to potřebuješ, nejspíše nějaké analýzy ceny. Můžeš si skrz php funkci file_get_contents() stáhnout čistý HTML kód a pak si s ním dělat co chceš.

Př.

$site = "http://www.example.com";
$code = file_get_contents($site);
$code = htmlentities($code, ENT_QUOTES, "UTF-8"); // Převedu, abych viděl i tagy při výpisu
echo "<code>".$code."</code>";
Sonic
Člen | 6
+
0
-

Ahoj,
Toto bohužel fungovat nebude. Pokud takto stáhnu např. amazon.com, tak nebudou správně fungovat skripty. Není tu vyřešen AJAX atd. Uživatel se na té stránce v tom iframu musí být schopen normálně pohybovat, jakoby byl normálně na tom webu, což já mu nejsem schopen pak zabezpečit, když mu ho tam zobrazím třeba do nějakého divu apod.

sadamek
Člen | 16
+
0
-

Tak pokud ti stačí URL, tak to obslouží jednoduchý javascript.

<script>
$(function() {
	$("#getSrcButton").click(function() {
		alert($("#myIframe").get(0).contentWindow.location);
	});
});
</script>

<iframe src="http://example.com" id="myIframe"></iframe>
<input type="button" value="click me" id="getSrcButton" />
Sonic
Člen | 6
+
0
-

Ahoj,
funguje to správně. Mockrát díky, toto řešení mě nenapadlo :-)

Díky !