我想知道是否有办法有说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的大小也是沉重的,我认为可能会影响浏览器。
我认为你需要使用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++){
...
}