jak zjistit URL stránky v iframe (cross-domain)
- Sonic
- Člen | 6
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
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
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
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" />