2012-01-10 15 views
16

Używam znacznika object do załadowania fragmentu html na stronie html.Jak zdobyć elementy html z tagu object?

Mój kod wygląda mniej więcej wzdłuż tych linii:

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

Zgodnie z oczekiwaniami po załadowaniu strony niektóre elementy są dodawane pomiędzy znacznikami obiektów. Chcę uzyskać te elementy, ale nie mogę uzyskać do nich dostępu.

Próbowałem następujących $("object").html()$("object").children()$("object")[0].innerHTML

Żaden z nich nie wydają się działać. Czy istnieje inny sposób na zdobycie tych elementów?

EDIT:

Bardziej szczegółowy przykład:

rozważyć tę

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

Gdy próbuję dostać html wewnątrz obiektu pojawia się pusty ciąg.

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

+0

Czy '$ (" obiekt ")' zwraca coś? –

+0

Jeśli moje przypuszczenie jest właściwe, możesz używać przeglądarki IE, prawda? – AmGates

+0

Tak $ ("obiekt") zwraca coś. I chodź, nie używam IE – Noam

Odpowiedz

9

innerHTML będzie dostarczając dostęp do kodu HTML, który jest między <object> i </object>. Pyta się, w jaki sposób załadować html do obiektu w oknie/klatce, które on tworzy (nie ma to nic wspólnego z kodem między tagami open i close).

Szukam również odpowiedzi na to i obawiam się, że nie ma. Jeśli ją znajdę, wrócę i opublikuję tutaj, ale szukam (i nie jestem sam) przez wiele czasu.

0

Spróbuj tego:

// 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() zwraca [] dla mnie – Noam

+0

$ ('object'). Contents() to kolekcja, musisz wyszukać element wewnątrz tego obiektu –

+1

spróbuj użyć: $ ('object'). Contents(). Find ('html'). Html(); –

0

Tu idzie kawałek próbki kodu, który działa. Nie jestem pewien, jaki jest problem z twoim kodem.

<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

Dopóki go umieścić na tej samej domenie, można wykonać następujące czynności:

HTML

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

JavaScript

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

Można użyć następującego kodu do odczytu danych obiektów po załadowaniu całkowicie i jest z tej samej domeny:

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

Nadzieja to pomaga!

-2

AKTUALIZACJA

użyłem tej linii JavaScript, żeby zmienić wartość wkładu wniesionego wewnątrz iFrame,

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

referencyjny: https://stackoverflow.com/a/14451440/3452102

0

Nie, to nie jest możliwe uzyskanie dostępu do ramki krzyżowej!

Powiązane problemy