2010-05-28 56 views
36

我一直在嘗試這一點,現在已經看到了類似問題的其他答案,但是當我試圖更改iframe的src屬性時,它會更新它的整體窗口。這是下面的代碼我使用的正常工作(不jQuery的):用jquery更改iframe源碼

<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> 

正如我所說的,我已經試過

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

它顯示的頁面,但不在iframe中。我真的只是學習jQuery的,但我無法找出什麼是我的情況不是這樣的其他類似的問題不同:

Jquery and iFrame update

感謝。

+0

你提到它顯示的頁面,但不會在iframe中,你確定這是一個jQuery的問題,而不是一個CSS問題?也許你可以啓用邊框來查看框架在加載新頁面時是否正在改變尺寸。 – Mayo 2010-05-28 15:58:55

回答

91

應該工作。

這裏的一個工作示例:

http://jsfiddle.net/rhpNc/

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

使用ATTR()指向外部域可以觸發這樣Chrome的錯誤:「拒絕顯示文檔,因爲顯示由X禁止 - 框架選項「。解決方法是將整個iframe HTML代碼移動到腳本中(例如在jQuery中使用.html())。

例子:

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