多个iframe发送一个请求到同一个SRC(Multiple Iframes sending ONE

2019-09-28 14:35发布

我想知道是否有办法有说3个I帧加载相同的资源( :HTTP //myservice.php从IFRAME只有一个请求)。 该myservice.php返回一个HTML文档,浏览器应该以某种方式加载HTML无需重新加载一切额外的2倍,包括加载HTML文档中的CSS和JS。 换句话说,是否有可能只用1请求从第一IFRAME发送到从myservice.php加载HTML文档,并有其他2个内部框架中加载相同的html而不发送额外的http请求。

<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的大小也是沉重的,我认为可能会影响浏览器。

Answer 1:

我认为你需要使用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++){

...
}


文章来源: Multiple Iframes sending ONE request to the same SRC