2016-04-08 20 views
1

iframeから3つのiframeが同じリソース(http://myservice.php)をロードする方法があるかどうかは疑問でした。 myservice.phpはHtmlドキュメントを返します。ブラウザは、ロードされたHTMLドキュメントにCSSやJSを含めて何度でも、すべてを再ロードせずにhtmlをロードする必要があります。言い換えれば、最初のiframeから送信された1つのリクエストだけがmyservice.phpからHTMLドキュメントをロードし、他の2つのiframeに追加のhttpリクエストを送信せずに同じHTMLをロードさせることが可能ですか?私はJSONPでHTMLを格納について考えている複数のIframeが同じSRCに1つのリクエストを送信する

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

(クロスドメインの問題を回避するため)、変数に格納しますが、それは複数の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; 
    } 
} 

あなたが別の場所でのiframeの異なる量を持っている場合は、アイフレームの数だけでなく

<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++){ 

... 
} 
を渡すことができます
関連する問題