2016-04-08 55 views
1

我想知道是否有方法讓iframe使用來自iframe的唯一請求加載相同資源(http://myservice.php)。 myservice.php返回一個Html文檔,瀏覽器應該以某種方式加載html,而不用重新加載所有2次,包括加載的HTML文檔中的CSS和JS。換句話說,是否有可能僅從第一個iframe發送1個請求,從myservice.php加載HTML文檔,並讓其他2個iframe加載相同的html,而不發送其他http請求。多個內聯框架向同一個SRC發送一個請求

<iframe id="iframe1" src="myservice.php"></iframe>//should send only request 
<iframe id="iframe2" src="myservice.php"></iframe>//use the already loaded data without sending an additonal http request 
<iframe id="iframe3" src="myservice.php"></iframe> 

我曾經想過存儲與JSONP的HTML(以避免跨域問題),並將其存儲在一個變量,但如果它不是具有多個iframe發送多個HTTP的默認方式š更高效的我不知道請求我的.php。此外,html的大小也很重,我認爲這會影響瀏覽器。

回答

0

我認爲你需要使用JavaScript來做到這一點。

把你的框架,並給他們每個人不同的ID:

<iframe name="iframe1" id="f1" src="old.html"></iframe> 
<iframe name="iframe2" id="f2" src="old.html"></iframe> 
<iframe name="iframe3" id="f3" src="old.html"></iframe> 

調用一個函數:

<a href="#" onClick="multipleFrames('new.html');">change iframes</a> 

這將是最好的通過URL中的作用。這使得你的代碼更加可重用。

然後製作一個函數,將你的url傳遞給你(u)。

function multipleFrames(u){ //url 
    var frames=window.frames; 
    for (var i=1; i<3; i++){ 

     var frame="f"+i; 
     document.getElementById(frame).src = u; 
    } 
} 

如果您在不同的地方I幀的不同的量,你可以通過I幀的數量以及

<a href="#" onClick="multipleFrames('new.html','3');">change iframes</a> 

 

 function multipleFrames(u,n){ //url, number of iframes 
       var frames=window.frames; 
       var total=n+1; 
       for (var i=1; i<total; i++){ 

... 
}