2013-05-16 69 views
8

Tôi đang thực hiện lần đầu tiên này. Tôi đã tạo một iframe trên trang của mình và tôi muốn văn bản từ số iframe đến số jquery. Đây là mã của tôi:Nhận dữ liệu từ iframe

<html> 
    <head><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 

    <script type="text/javascript"> 
    function copyIframeContent(iframe){ 
     var iframeContent = $(iframe).contents(); //alert(iframeContent); 
     //$("#result").text("Hello World"); 
     $("#result").html(iframeContent.find('body').html);alert(iframeContent.find('body').html()); 
    } 
    </script> 
    </head> 
    <body> 
    <iframe id="myIframe" onload="copyIframeContent(this);" name="myIframe" src="text.php"></iframe><br /> 
    Result:<br /> 
    <textarea id='result'></textarea> 
    <input type="button" value="click" id="btn" onclick="aa()"> 
    <script type="text/javascript"> 
     function aa(){ alert("Fdf"); 
      alert(document.getElementById('myIframe').contentWindow.document.body.innerHTML); 
    } 
    </script> 
    </body> 
</html> 

text.php:

text to change 

tôi đã cố gắng rất nhiều trong tất cả các trình duyệt nhưng vẫn này không hoạt động. Có ai có thể giúp tôi lấy nội dung này không?

+0

có cùng một trang và trong cùng một thư mục –

+1

"nhưng vẫn không hoạt động" Im chỉ tự hỏi điều đó có nghĩa là gì? Xin vui lòng xây dựng bằng cách cho chúng tôi thông báo lỗi nếu bất kỳ –

+0

tôi đã sao chép/dán ở đây mã wholde của tôi nhưng vẫn còn làm việc của nó dontknow tại sao. trong cảnh báo nó cho tôi thấy [ObectObject] –

Trả lời

0

Các contentWindow làm việc trong cả FF và chrome

document.getElementById('myFrame').contentWindow.document.body  

sẽ cung cấp cho bạn một cơ thể yếu tố DOM

Bạn cũng có thể thử một cái gì đó giống như

window.frames['myIframe'].document.body  

Điều đó có thể làm các trick cho bạn cũng

Bạn có thể gặp sự cố với trình duyệt của mình trong an ninh. Nếu bạn chạy nó trên một máy cục bộ. Có một cách để vô hiệu hóa bảo mật trình duyệt.

+0

đầu tiên tôi watn văn bản từ văn bản từ iframe và sau đó tôi muốn thay thế nó bằng div của tôi (kết quả) –

+0

(document.getElementById ('myFrame'). contentWindow.document.body) .appendchild (div (kết quả)) http://www.w3schools.com/dom/met_element_appendchild.asp –

2

Sử dụng .contents() để truy cập DOM của iFrame.

$('#myIframe').contents() 

UPDATE:

Trong OP:

$("#result").html(iframeContent.find('body').html); 

nên nói:

$("#result").html(iframeContent.find('body').html()); 
+0

OP đã sử dụng nội dung() –

+0

hiện đang hoạt động .. tôi cảnh báo điều này và tôi nhận được "[obect Object]" trong cảnh báo hộp –

+0

'$ ('# myIframe'). contents(). tìm ('body'). html()' quá? .contents() một mình trả về jQuery. –

0

Làm với jquery sẽ là một chút dễ dàng hơn:

$('Your Selector', frames['myIframe'].document) 

Ví dụ trên sẽ nhận bất kỳ thứ gì từ myIframe. Nhưng khung nội tuyến PHẢI là từ cùng một miền với tài liệu gốc. Nếu không thuộc cùng một tên miền, vi phạm bảo mật xảy ra (Bạn không thể thêm nội dung từ trang web nước ngoài vào trang của mình và thay đổi nội dung đó.)

Nếu không có vi phạm bảo mật, bạn có thể làm bất cứ điều gì với lựa chọn. Ví dụ bạn có thể sử dụng phương thức jquery append() để chèn html mới bên trong iFrame, bạn có thể sử dụng phương thức html() để thay thế html hoặc bất kỳ hàm nào khác mà jquery/pure javascript cho phép.

1
var content=$("iframe").contents().find('body').html(); 

alert(content); 
+5

Hiya, điều này cũng có thể giải quyết vấn đề ... nhưng nó sẽ là tốt nếu bạn có thể * chỉnh sửa câu trả lời của bạn * và cung cấp một giải thích nhỏ về cách thức và lý do nó hoạt động :) Đừng quên - có rất nhiều người mới vào Stack tràn, và họ có thể tìm hiểu một hoặc hai điều từ chuyên môn của bạn - điều hiển nhiên đối với bạn có thể không phải như vậy đối với họ. –

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