У меня есть страница, содержащая несколько фреймов, относящихся к внешним сайтам.
Как я могу отключить всю свою страницу с помощью javascript или jquery?
У меня есть страница, содержащая несколько фреймов, относящихся к внешним сайтам.
Как я могу отключить всю свою страницу с помощью javascript или jquery?
Вы не можете. Вам нужно будет получить доступ к содержимому фреймов, но если вы загружаете внешние сайты, вы столкнетесь с той же политикой происхождения.
Чтобы получить дополнительные ответы на эту тему, проверьте этот вопрос.
Если сайты, которые вы загружаете, довольно просты, вы можете «загрузить» их через php и добавить тег <base>
в html.
Примечание. Он не будет работать на сложных веб-сайтах с большим количеством внешних ресурсов.
Создайте файл iframe-loader.php:
с таким содержимым:
<?php
error_reporting(0);
$url = $_REQUEST['url'];
$html = file_get_contents($url);
$dom = new domDocument;
$dom->strictErrorChecking = false;
$dom->recover = true;
$dom->loadHTML($html);
//BASE
$head = $dom->getElementsByTagName('head')->item(0);
$base = $dom->createElement('base');
$base->setAttribute('href',$url);
if ($head->hasChildNodes()) {
$head->insertBefore($base,$head->firstChild);
} else {
$head->appendChild($base);
}
header('Content-Type: text/html; charset=utf-8');
echo $dom->saveHTML();
?>
Затем вы можете использовать загрузчик, передав ему url
:
<iframe src="iframe-loader.php?url=http://www.example.com" />
У вас будет доступ к фреймам, поскольку они не объединяются с одной и той же политикой происхождения.
Теперь вы можете использовать ответ, который @ObsidianAge упомянул в комментариях.