Есть ли возможное обходное решение для получения html iframe, содержащего контент из другого домена, и что-то делать с JS/jQuery в зависимости от того, что он содержит? Браузеры AFAIK скрывают это содержимое из-за той же политики происхождения, поэтому я не могу просто получить к нему доступ напрямую.Доступ к содержимому iframe из другого домена
ответ
Если вы не хотите включать весь плагин через iFrame, в котором уже используется множество скриптов, а сайт больше похож на таблицу с результатами местного спортивного клуба или другой информацией, доступной только для чтения, вы можете использовать php и file_get_contents()
, до Импорт iframe. Теперь вы можете стилизовать его содержимое и настроить их с помощью jQuery.
Например, вы получили следующую разметку:
<html>
<!-- Some Head and Body parts, like navigation, sidebar, etc. -->
<div id="results">
<!-- Lots of results -->
</div>
</html>
Вы можете предназначаться id="result
определить начало вашего раздела импорта.
Так позволяет определить свою цель:
$host = 'http://sportclub.de/results.html';
и импортировать его:
$filestring = file_get_contents($host);
Как вы не хотите импортировать весь URL, вам необходимо установить начальную и конечную точку. Чтобы дать вам основную идею, это код, который работает как-то вроде концепции вышеназванного:
<?php
$host = 'http://sportclub.de/results.html';
$filestring = file_get_contents($host);
$startpos = 0; //erstes Zeichen
while($pos = strpos($filestring, "<div id=\"results\"", $startpos))
{
$string = substr($filestring, $pos, strpos($filestring, "</div>", $pos + 1) - $pos);
echo $string."</div>";
$startpos = $pos + 1;
}
$string = preg_replace("/(^¦\s)(http:\/\/)?(www\.)?[\.0-9a-zA-Z\-_~]+\.(com¦net¦org¦info¦name¦biz¦.+\.\w\w)((\/)?[0-9a-zA-Z\.\-_~#]+)?\b/ie","",$string);
?>
И что, если у меня нет доступа к концу, если у меня есть только этот контент iframe «как есть», и вам нужно выяснить, содержит ли он что-то, что я ищу? Все, что мне нужно, это доступ только для чтения к DOM iframe для проверки внутреннегоHTML определенного элемента – yxfxmx
@yxfxmx, то есть вы не можете повлиять на то, как iframe встроен в сайт, вы можете редактировать файл javascript только? Или вы не можете редактировать содержимое самого iframe (которое будет внедрено через, как сказано, iframe)? –
я не уверен, но вы можете попытаться отправить 'Access-Control-Allow-Origin' заголовок, в котором бело- перечислите домен –