<iframe id="id_description_iframe" class="rte-zone" height="200" frameborder="0" title="description">
<html>
<head></head>
<body class="frameBody">
test<br/>
</body>
</html>
</iframe>
Я хочу получить:
test<br/>
<iframe id="id_description_iframe" class="rte-zone" height="200" frameborder="0" title="description">
<html>
<head></head>
<body class="frameBody">
test<br/>
</body>
</html>
</iframe>
Я хочу получить:
test<br/>
Точный вопрос - как это сделать с использованием чистого JavaScript, а не с jQuery.
Я всегда использую решение, которое можно найти в исходном коде jQuery. Это только одна строка и чистый JavaScript.
Для меня это лучший и даже самый короткий способ получить содержимое iframes.
Сначала получите ваш iframe:
var iframe = document.getElementById('id_description_iframe');
// or
var iframe = document.querySelector('#id_description_iframe');
И затем используйте решение jQuery:
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
Он работает даже в Internet Explorer, который делает этот трюк во время свойства
contentWindow
объектаiframe
. Большинство других браузеров используют свойствоcontentDocument
, и именно по этой причине мы сначала подтверждаем это свойство в этом условии ИЛИ. Если он не установлен, попробуйтеcontentWindow.document
.
И затем вы обычно можете использовать getElementById()
или даже querySelectorAll()
, чтобы выбрать DOM-элемент из iframeDocument
:
var iframeContent;
if (iframeDocument) {
iframeContent = iframeDocument.getElementById('frameBody');
// or
iframeContent = iframeDocument.querySelectorAll('#frameBody');
}
Функции вызова в iframe
Получить только элемент window
из iframe
, чтобы вызвать некоторые глобальные функции, переменные или целые библиотеки (например, jQuery
):
var iframeWindow = iframe.contentWindow;
if (iframeWindow) {
// you can even call jQuery or other frameworks if it is loaded inside the iframe
iframeContent = iframeWindow.jQuery('#frameBody');
// or
iframeContent = iframeWindow.$('#frameBody');
// or even use any other global variable
iframeWindow.inside_iframe_variable = window.outside_iframe_variable;
}
Примечание
Все это возможно, если вы наблюдаете политику одного и того же происхождения.
Используя JQuery, попробуйте следующее:
$("#id_description_iframe").contents().find("body").html()
AFAIK, iframe нельзя использовать таким образом. Вам нужно указать свой атрибут src на другую страницу.
Здесь, как получить его содержимое тела, используя старый старый javascript. Это работает как с IE, так и с Firefox.
function getFrameContents(){
var iFrame = document.getElementById('id_description_iframe');
var iFrameBody;
if ( iFrame.contentDocument )
{ // FF
iFrameBody = iFrame.contentDocument.getElementsByTagName('body')[0];
}
else if ( iFrame.contentWindow )
{ // IE
iFrameBody = iFrame.contentWindow.document.getElementsByTagName('body')[0];
}
alert(iFrameBody.innerHTML);
}
он отлично работает для меня:
document.getElementById('iframe_id').contentWindow.document.body.innerHTML;
используйте content
в iframe с помощью JS:
document.getElementById('id_iframe').contentWindow.document.write('content');
Я думаю, что размещение текста между тегами зарезервировано для браузеров, которые не могут обрабатывать iframe i.e...
<iframe src ="html_intro.asp" width="100%" height="300">
<p>Your browser does not support iframes.</p>
</iframe>
Вы используете атрибут 'src' для установки источника iframes html...
Надеемся, что это поможет :)
Следующий код совместим с кросс-браузером. Он работает в IE7, IE8, Fx 3, Safari и Chrome, поэтому нет необходимости обрабатывать проблемы с несколькими браузерами. Не тестировался в IE6.
<iframe id="iframeId" name="iframeId">...</iframe>
<script type="text/javascript">
var iframeDoc;
if (window.frames && window.frames.iframeId &&
(iframeDoc = window.frames.iframeId.document)) {
var iframeBody = iframeDoc.body;
var ifromContent = iframeBody.innerHTML;
}
</script>
Chalkey верен, вам нужно использовать атрибут src, чтобы указать страницу, содержащуюся в iframe. Если вы сделаете это, и документ в iframe находится в том же домене, что и родительский документ, вы можете использовать это:
var e = document.getElementById("id_description_iframe");
if(e != null) {
alert(e.contentWindow.document.body.innerHTML);
}
Очевидно, что вы можете сделать что-то полезное с содержимым, а не просто помещать их в предупреждение.