Javascript Iframe innerHTML
Кто-нибудь знает, как получить HTML из IFRAME, я пробовал несколько разных способов:
document.getElementById('iframe01').contentDocument.body.innerHTML
document.frames['iframe01'].document.body.innerHTML
document.getElementById('iframe01').contentWindow.document.body.innerHTML
и т.д.
Ответы
Ответ 1
Я думаю, что это то, что вы хотите:
window.frames['iframe01'].document.body.innerHTML
EDIT:
У меня есть хорошие полномочия, что это не будет работать в Chrome и Firefox, хотя оно отлично работает в IE, где я его тестировал. Оглядываясь назад, это была большая ошибка.
Это будет работать:
window.frames[0].document.body.innerHTML
Я понимаю, что это не совсем то, что было задано, но не хочу удалять ответ, потому что я думаю, что у него есть место.
Мне нравится ответ jquery @ravz ниже.
Ответ 2
Будет работать что-то вроде следующего.
<iframe id = "testframe" onload = populateIframe(this.id);></iframe>
// The following function should be inside a script tag
function populateIframe(id) {
var text = "This is a Test"
var iframe = document.getElementById(id);
var doc;
if(iframe.contentDocument) {
doc = iframe.contentDocument;
} else {
doc = iframe.contentWindow.document;
}
doc.body.innerHTML = text;
}
Ответ 3
Если вы посмотрите JQuery, вы можете сделать что-то вроде:
<iframe id="my_iframe" ...></iframe>
$('#my_iframe').contents().find('html').html();
Это предполагает, что ваш родитель и дочерний элемент iframe находятся на одном сервере из-за Same Origin Policy в Javascript.
Ответ 4
Ответ Конрой был прав. В случае, если вам нужны только теги тела, просто используйте:
$('#my_iframe').contents().find('body').html();
Ответ 5
Не забывайте, что вы не можете перекрещивать домены из-за безопасности.
Итак, если это так, вы должны использовать JSON.
Ответ 6
С этой целью вы можете использовать свойство contentDocument или contentWindow.
Вот пример кода.
function gethtml()
{
var x=document.getElementById("myframe");
var y=(x.contentWindow || x.contentDocument);
if (y.document)y=y.document;
alert(y.body.innerHTML);
}
здесь, мой кадр - это идентификатор вашего iframe.
Примечание. Вы не можете извлечь содержимое из iframe из src вне домена.
Ответ 7
document.getElementById('iframe01').outerHTML
Ответ 8
Вы можете получить источник из другого домена, если вы установите фильтр ForceCORS в Firefox. Когда вы включите этот фильтр, он отключит функцию безопасности в браузере, и ваш script будет работать, даже если вы попытаетесь прочитать другую веб-страницу. Например, вы можете открыть FoxNews.com в iframe, а затем прочитать его источник. Причина, по которой современные веб-дизайнеры отрицают эту способность по умолчанию, состоит в том, что, если в другой домен включен фрагмент JavaScript, и вы читаете это и отображаете его на своей странице, он может содержать вредоносный код и представлять угрозу безопасности. Таким образом, всякий раз, когда вы показываете данные из другого домена на своей странице, вы должны остерегаться этой реальной угрозы и реализовать способ отфильтровать весь код JavaScript из вашего текста, прежде чем вы собираетесь его отображать. Помните, что если предполагаемый фрагмент исходного текста содержит некоторый код, заключенный в теги script, они не будут отображаться при отображении на вашей странице, тем не менее они будут работать! Итак, осознайте, что это угроза.
http://www-jo.se/f.pfleger/forcecors
Ответ 9
Это решение работает так же, как iFrame. Я создал PHP-скрипт, который может получить все содержимое с другого веб-сайта, и наиболее важной частью является то, что вы можете легко применить свой пользовательский jQuery к этому внешнему контенту. Пожалуйста, обратитесь к следующему сценарию, который может получить все содержимое с другого сайта, а затем вы также можете применить свой cusom jQuery/JS. Этот контент может быть использован где угодно, внутри любого элемента или любой страницы.
<div id='myframe'>
<?php
/*
Use below function to display final HTML inside this div
*/
//Display Frame
echo displayFrame();
?>
</div>
<?php
/*
Function to display frame from another domain
*/
function displayFrame()
{
$webUrl = 'http://[external-web-domain.com]/';
//Get HTML from the URL
$content = file_get_contents($webUrl);
//Add custom JS to returned HTML content
$customJS = "
<script>
/* Here I am writing a sample jQuery to hide the navigation menu
You can write your own jQuery for this content
*/
//Hide Navigation bar
jQuery(\".navbar\").hide();
</script>";
//Append Custom JS with HTML
$html = $content . $customJS;
//Return customized HTML
return $html;
}
Ответ 10
Вы можете получить html из iframe, используя этот код iframe = document.getElementById('frame'); innerHtml = iframe.contentDocument.documentElement.innerHTML