2011-08-24 17 views
36

Tôi muốn tải một iframe trên nhấp chuột, đây là những gì tôi có cho đến nay:Làm thế nào để tải một url trong iframe với Jquery

$("#frame").click(function() { 
     $('this').load("http://www.google.com/"); 
    }); 

Nó không làm việc. Đây là mã hoàn chỉnh: JS Bin

+1

Bạn có thực sự phải sử dụng iframe? Tôi chắc chắn một người nào đó sẽ giúp bạn làm thế nào để có được điều này, nhưng bạn nên tránh ifram nhiều như bạn có thể. –

+0

http://stackoverflow.com/questions/362730/are-iframes-considered-bad-practice/362743#362743 –

+0

Tôi thực sự cần sử dụng iframe :) – Youss

Trả lời

81
$("#button").click(function() { 
    $("#frame").attr("src", "http://www.example.com/"); 
}); 

HTML:

<div id="mydiv"> 
    <iframe id="frame" src="" width="100%" height="300"> 
    </iframe> 
</div> 
<button id="button">Load</button> 
+4

Các hạn chế của Trình duyệt chéo sẽ không cho phép bạn thực hiện việc này. –

+1

@JeanPaul, tôi chỉ đang đặt 'src' của' iframe' ở đây ... – Dogbert

+0

cách bạn xử lý lỗi một cách duyên dáng? Ví dụ: chúng tôi có một công cụ báo cáo tạo một tài liệu PDF mà chúng tôi tải vào một khung nội tuyến ẩn sẽ tự động đưa người dùng tải xuống, nhưng có khả năng là sẽ xảy ra sự cố và chúng tôi muốn thông báo cho người dùng về sự cố . – Jacques

7

Hãy thử $(this).load("/file_name.html");. Phương pháp này nhắm mục tiêu tệp cục bộ.

Bạn cũng có thể nhắm mục tiêu các file từ xa (trên tên miền khác) có một cái nhìn tại địa chỉ: http://en.wikipedia.org/wiki/Same_origin_policy

+6

Vì vậy, tại sao bạn gửi id nếu nó không hoạt động? –

+1

"Điều này" trong cụm từ của ông đề cập đến tên miền "www.google.com" – Manuel

9
$("#frame").click(function() { 
    this.src="http://www.google.com/"; 
}); 

Đôi khi đồng bằng JavaScript nên thú vị hơn và nhanh hơn so với jQuery ;-)

+0

Vấn đề duy nhất là trong trường hợp này 'này' là nút, không phải là iframe ... – patrick

+0

@patrick nút gì ??? – Christophe

+0

Có, vui lòng giải thích nội dung "này" trong ngữ cảnh này. –

0

Chỉ trong trường hợp bất kỳ ai vẫn tình cờ gặp lỗi này Câu hỏi:

Mã lý thuyết gần như chính xác theo nghĩa, vấn đề là sử dụng $ ('this') thay vì $ (this), do đó yêu cầu jQuery tìm thẻ.

$(document).ready(function(){ 
    $("#frame").click(function() { 
    $(this).load("http://www.google.com/"); 
    }); 
}); 

Kịch bản thân woudln't làm việc vì nó là ngay bây giờ mặc dù vì load() chức năng chính nó là một chức năng AJAX, và google dường như không đặc biệt cho phép người sử dụng tải trang này với AJAX, nhưng phương pháp này phải dễ sử dụng để tải các trang từ tên miền của riêng bạn bằng cách sử dụng đường dẫn tương đối.

0

đây là khung nội tuyến trong quan điểm:

<iframe class="img-responsive" id="ifmReport" width="1090" height="1200" > 

    </iframe> 

tải nó trong kịch bản:

$('#ifmReport').attr('src', '/ReportViewer/ReportViewer.aspx'); 
Các vấn đề liên quan