Как получить элементы html из тега объекта?

Я использую тег объекта для загрузки html-фрагмента внутри html-страницы.

Мой код выглядит примерно так:

<html><object data="/html_template"></object></html>

Как и ожидалось после загрузки страницы, некоторые элементы добавляются между тегами объекта. Я хочу получить эти элементы, но я не могу получить к ним доступ.

Я пробовал следующее $("object").html() $("object").children() $("object")[0].innerHTML

Ничто из этого не работает. Есть ли другой способ получить эти элементы?

EDIT:

Более подробный пример:

рассмотрим это

<html><object data="http://www.YouTube.com/v/GGT8ZCTBoBA?fs=1&hl=en_US"></object></html>

Если я пытаюсь получить html внутри объекта, я получаю пустую строку.

http://jsfiddle.net/wwrbJ/1/

Ответы

Ответ 1

innerHTML предоставит доступ к html, который находится между <object> и </object>. Что нужно задать, как получить html, загруженный объектом внутри создаваемого окна/кадра (это не имеет никакого отношения к коду между тегами open и close).

Я также ищу ответ на это, и я боюсь, что их нет. Если я найду его, я вернусь и отправлю его сюда, но я смотрю (и не один) уже много времени.

Ответ 2

Пока вы размещаете его в том же домене, вы можете сделать следующее:

HTML

<html>
    <object id="t" data="/html_template" type="text/html">
    </object>
</html>

JavaScript

var t=document.querySelector("#t");
var htmlDocument= t.contentDocument;

Ответ 3

Попробуйте следующее:

// wait until object loads
$('object').load(function() {
    // find the element needed
    page = $('object').contents().find('div');
    // alert to check
    alert(page.html());
});

Ответ 4

Здесь идет образец кода, который работает. Не уверен, что проблема с вашим кодом.

<html>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
 <script type="text/javascript">
    $(document).ready(function(){
            var k = $("object")[0].innerHTML;
            alert(k);
            $("object")[0].innerHTML = "testing";
        });
 </script>
<object data="/html_template">hi</object>
</html>

Ответ 5

Вы можете использовать следующий код для чтения данных объекта после его полной загрузки и одного домена:

HTML -

<html>
<div class="main">
<object data="/html_template">
</object>
</div>
</html>

Jquery -

$('.main object').load(function() {
    var obj = $('.main object')[0].contentDocument.children;
    console.log(obj);
});

Надеюсь, это поможет!

Ответ 6

Нет, невозможно получить доступ к кадру кросс-начала!

Ответ 7

ОБНОВЛЕНО

Я использовал эту строку Javascript для изменения значения ввода, поданного внутри iFrame,

document.getElementById('iframeID').contentWindow.document.getElementById('inputID').value = 'Your Value';

Ссылка: fooobar.com/info/133258/...