Как получить элементы 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/...