2010-05-28 44 views
36

Tôi đã thử điều này một chút và đã xem xét các câu trả lời khác cho các câu hỏi tương tự trên SO, nhưng khi tôi cố gắng thay đổi thuộc tính src của khung nội tuyến, nó sẽ cập nhật toàn bộ cửa sổ. Dưới đây là đoạn mã sau Tôi đang sử dụng mà các công trình một cách chính xác (không jquery):thay đổi nguồn khung nội tuyến bằng jquery

<html> 
<head> 
<style type="text/css"> 
iframe#ifrm { 
    border:none; 
    padding:.5em; 
    margin:1.5em 0 1em; 
    width:100%; 
    height:100%; 
} 
</style> 
<script src="./js/jquery-1.4.2.js" type="text/javascript"></script> 
<script type="text/javascript"> 
// <![CDATA[ 
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    // this is the function I'm trying to replace: 
    function loadIframe(iframeName, url) { 
    if (window.frames[iframeName]) { 
     window.frames[iframeName].location = url; 
     return false; 
    } 
    return true; 
} 
// ]]> 
</script> 
</head> 

<body> 
<ul> 
<li><a href="http://www.google.com/" onclick="return loadIframe('ifrm', this.href)">Page 1</a> </li> 
<li><a href="tabs.html" onclick="return loadIframe('ifrm', this.href)">Page 2</a></li> 
</ul> 
<div class="iframe"> 
<iframe name="ifrm" id="ifrm" src="tabs.html" frameborder="0"> 
Your browser doesn't support iframes.</iframe> 

Như tôi đã nói, tôi đã cố gắng

$('#ifrm').attr('src', "http://www.google.com") 

hiển thị trang, nhưng không có trong khung nội tuyến. Tôi thực sự chỉ là học jquery, nhưng tôi không thể tìm ra những gì khác biệt về hoàn cảnh của tôi hơn những câu hỏi tương tự khác như thế này:

Jquery and iFrame update

Cảm ơn.

+0

Bạn đề cập rằng nó sẽ hiển thị trang nhưng không phải trong iframe, bạn có chắc đó là một vấn đề jQuery và không phải là một vấn đề CSS? Có thể bạn có thể bật đường viền để xem liệu khung có đang thay đổi thứ nguyên khi tải một trang mới hay không. – Mayo

Trả lời

91

Nên hoạt động.

Dưới đây là một ví dụ làm việc:

http://jsfiddle.net/rhpNc/

function loadIframe(iframeName, url) { 
    var $iframe = $('#' + iframeName); 
    if ($iframe.length) { 
     $iframe.attr('src',url); 
     return false; 
    } 
    return true; 
} 
2

Sử dụng attr() trỏ đến một miền bên ngoài có thể gây ra một lỗi như thế này trong Chrome: "Từ chối để hiển thị tài liệu vì hiển thị cấm X -Frame-Tùy chọn ". Giải pháp cho việc này có thể là di chuyển toàn bộ mã HTML iframe vào tập lệnh (ví dụ: using .html() trong jQuery).

Ví dụ:

var divMapLoaded = false; 
$("#container").scroll(function() { 
    if ((!divMapLoaded) && ($("#map").position().left <= $("#map").width())) { 
    $("#map-iframe").html("<iframe id=\"map-iframe\" " + 
     "width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" " + 
     "marginheight=\"0\" marginwidth=\"0\" " + 
     "src=\"http://www.google.it/maps?t=m&amp;cid=0x3e589d98063177ab&amp;ie=UTF8&amp;iwloc=A&amp;brcurrent=5,0,1&amp;ll=41.123115,16.853177&amp;spn=0.005617,0.009943&amp;output=embed\"" + 
     "></iframe>"); 
    divMapLoaded = true; 
} 
Các vấn đề liên quan