2012-01-10 2 views
16

Я использую тег объекта для загрузки 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/

+0

Does '$ (" object ")' что-то возвращать? –

+0

Если моя догадка правильная, вы можете использовать браузер IE правильно? – AmGates

+0

Да $ ("object") возвращает что-то. И я не использую IE – Noam

ответ

9

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

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

0

Попробуйте это:

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

$ ('object'). Contents() возвращает [] для меня – Noam

+0

$ ('object'). Contents() - это коллекция, вам нужно искать элемент внутри этого объекта –

+1

попробуйте использовать: $ ('object'). Contents(). Find ('html'). Html(); –

0

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

<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> 
13

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

HTML

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

JavaScript

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

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

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); 
}); 

Надеется, что это помогает!

-2

ОБНОВЛЕНО

Я использовал эту линию Javascript, чтобы изменить значение входного поданные внутри плавающего фрейма,

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

Ссылка: https://stackoverflow.com/a/14451440/3452102

0

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

Смежные вопросы