2012-01-10 67 views
16

Tôi đang sử dụng thẻ đối tượng để tải đoạn mã html trong một trang html.Cách lấy các phần tử html từ thẻ đối tượng?

Mã của tôi trông giống cùng những dòng này:

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

Đúng như dự đoán sau khi trang web được tải một số yếu tố được thêm vào giữa các thẻ đối tượng. Tôi muốn có được những yếu tố đó nhưng dường như tôi không thể truy cập chúng.

Tôi đã thử những điều sau $("object").html()$("object").children()$("object")[0].innerHTML

Không ai trong số những vẻ làm việc. Có cách nào khác để có được những yếu tố đó không?

EDIT:

Một ví dụ chi tiết hơn:

xem xét việc này

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

Nếu tôi cố gắng để có được những html trong đối tượng tôi nhận được một chuỗi rỗng.

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

+0

'$ (" đối tượng ")' có trả lại gì không? –

+0

Nếu tôi đoán đúng, bạn có thể đang sử dụng trình duyệt IE phải không? – AmGates

+0

Có $ ("đối tượng") trả về một cái gì đó. Và tôi không sử dụng IE – Noam

Trả lời

9

Các innerHTML sẽ provid truy cập vào html mà là ở giữa <object></object>. Những gì được hỏi là làm thế nào để có được các html được nạp bởi các đối tượng bên trong cửa sổ/khung mà nó được sản xuất (nó không có gì để làm với mã giữa các thẻ mở và đóng).

Tôi cũng đang tìm câu trả lời cho điều này và tôi e rằng không có câu trả lời nào. Nếu tôi tìm thấy một, tôi sẽ quay lại và đăng nó ở đây nhưng tôi đang tìm kiếm (và không phải một mình) cho rất nhiều thời gian bây giờ.

0

Hãy thử điều này:

// 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() trả về [] cho tôi – Noam

+0

$ ('object'). Contents() là một tập hợp, bạn phải tìm kiếm một phần tử bên trong đối tượng đó –

+1

cố gắng sử dụng: $ ('đối tượng'). Contents(). Find ('html'). Html(); –

0

Ở đây đi một mảnh mẫu mã mà làm việc. Không chắc chắn vấn đề là gì với mã của bạn.

<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

Chừng nào bạn đặt nó trên cùng một tên miền, bạn có thể làm như sau:

HTML

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

Javascript

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

Bạn có thể sử dụng đoạn mã sau để đọc dữ liệu đối tượng sau khi được tải hoàn toàn và có cùng tên miền:

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

Hope this helps!

-2

CẬP NHẬT

tôi sử dụng dòng này của Javascript để thay đổi giá trị của một đầu vào đệ bên trong một iFrame,

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

tham khảo: https://stackoverflow.com/a/14451440/3452102

0

Không, nó không phải có thể truy cập vào khung hình gốc!

Các vấn đề liên quan