调整iframe的大小-是否可以访问外部url代码
我看到了很多关于调整iFrame大小的问题,但所有这些问题都无法访问外部url。在这种情况下,我会。我可以在head标记中插入脚本。我试图使用插入到包含iframe的主页头中的脚本(我知道开始和结束帧标记是错误的-它不允许我将它们留在:调整iframe的大小-是否可以访问外部url代码,iframe,resize,Iframe,Resize,我看到了很多关于调整iFrame大小的问题,但所有这些问题都无法访问外部url。在这种情况下,我会。我可以在head标记中插入脚本。我试图使用插入到包含iframe的主页头中的脚本(我知道开始和结束帧标记是错误的-它不允许我将它们留在: iframe id="frame-one" scrolling="no" frameborder="0" src="yoursitehereexample" onload="FrameManager.registerFrame(this)" /if
iframe id="frame-one" scrolling="no" frameborder="0" src="yoursitehereexample" onload="FrameManager.registerFrame(this)" /iframe
这是标题中的js(链接的FrameManager.js文件)
var框架管理器=
{
currentFrameId:“”,
currentFrameHeight:0,
lastFrameId:“”,
lastFrameHeight:0,
resizeTimerId:null,
init:function()
{
if(FrameManager.resizeTimerId==null)
{
FrameManager.resizeTimerId=window.setInterval(FrameManager.resizeFrames,500);
}
},
resizeFrames:function()
{
FrameManager.retrieveFrameIdAndHeight();
if((FrameManager.currentFrameId!=FrameManager.lastFrameId)||
(FrameManager.currentFrameHeight!=FrameManager.lastFrameHeight))
{
var iframe=document.getElementById(FrameManager.currentFrameId.toString());
if(iframe==null)返回;
iframe.style.height=FrameManager.currentFrameHeight.toString()+“px”;
FrameManager.lastFrameId=FrameManager.currentFrameId;
FrameManager.lastFrameHeight=FrameManager.currentFrameHeight;
window.location.hash='';
}
},
RetrieveFrameId和高度:函数()
{
if(window.location.hash.length==0)返回;
var hashValue=window.location.hash.substring(1);
if((hashValue==null)| |(hashValue.length==0))返回;
var pairs=hashValue.split('&');
如果((pairs!=null)&&(pairs.length>0))
{
对于(变量i=0;i0))
{
if(对[0]==“frameId”)
{
if((对[1]!=null)和&(对[1]。长度>0))
{
FrameManager.currentFrameId=对[1];
}
}
else if(对[0]=“高度”)
{
变量高度=parseInt(对[1]);
如果(!isNaN(高度))
{
FrameManager.currentFrameHeight=高度;
FrameManager.currentFrameHeight+=15;
}
}
}
}
}
},
registerFrame:函数(帧)
{
var currentLocation=location.href;
var hashIndex=currentLocation.indexOf('#');
如果(hashIndex>-1)
{
currentLocation=currentLocation.substring(0,hashIndex);
}
frame.contentWindow.location=frame.src+'?frameId='+frame.id+'#'+currentLocation;
}
};
setTimeout(FrameManager.init,300);
然后……我将其作为链接放在框架页面标题ResizeFrame.js中:
//orig frame mgr script
$.getScript("http://www.yoursitehereexamle.com/js/FrameManager.js", function(){
});
// external heights load
function publishHeight()
{
if (window.location.hash.length == 0) return;
var frameId = getFrameId();
if (frameId == '') return;
var actualHeight = getBodyHeight();
var currentHeight = getViewPortHeight();
if (Math.abs(actualHeight - currentHeight) > 15)
{
var hostUrl = window.location.hash.substring(1);
hostUrl += "#";
hostUrl += 'frameId=' + frameId;
hostUrl += '&';
hostUrl += 'height=' + actualHeight.toString();
window.top.location = hostUrl;
}
}
function getFrameId()
{
var qs = parseQueryString(window.location.href);
var frameId = qs["frameId"];
var hashIndex = frameId.indexOf('#');
if (hashIndex > -1)
{
frameId = frameId.substring(0, hashIndex);
}
return frameId;
}
function getBodyHeight()
{
var height;
var scrollHeight;
var offsetHeight;
if (document.height)
{
height = document.height;
}
else if (document.body)
{
if (document.body.scrollHeight)
{
height = scrollHeight = document.body.scrollHeight;
}
if (document.body.offsetHeight)
{
height = offsetHeight = document.body.offsetHeight;
}
if (scrollHeight && offsetHeight)
{
height = Math.max(scrollHeight, offsetHeight);
}
}
return height;
}
function getViewPortHeight()
{
var height = 0;
if (window.innerHeight)
{
height = window.innerHeight - 18;
}
else if ((document.documentElement) && (document.documentElement.clientHeight))
{
height = document.documentElement.clientHeight;
}
else if ((document.body) && (document.body.clientHeight))
{
height = document.body.clientHeight;
}
return height;
}
function parseQueryString(url)
{
url = new String(url);
var queryStringValues = new Object();
var querystring = url.substring((url.indexOf('?') + 1), url.length);
var querystringSplit = querystring.split('&');
for (i = 0; i < querystringSplit.length; i++)
{
var pair = querystringSplit[i].split('=');
var name = pair[0];
var value = pair[1];
queryStringValues[name] = value;
}
return queryStringValues;
}
// window load
window.onload = function(event)
{
window.setInterval(publishHeight, 300);
}
//原始帧管理器脚本
$.getScript(“http://www.yoursitehereexamle.com/js/FrameManager.js“,函数(){
});
//外荷载
函数publishHeight()
{
if(window.location.hash.length==0)返回;
var frameId=getFrameId();
if(frameId='')返回;
var actualHeight=getBodyHeight();
var currentHeight=getViewPortHeight();
如果(数学abs(实际高度-当前高度)>15)
{
var hostUrl=window.location.hash.substring(1);
hostUrl+=“#”;
hostUrl+='frameId='+frameId;
hostUrl+='&';
hostUrl+='height='+actualHeight.toString();
window.top.location=主机URL;
}
}
函数getFrameId()
{
var qs=parseQueryString(window.location.href);
var frameId=qs[“frameId”];
var hashIndex=frameId.indexOf('#');
如果(hashIndex>-1)
{
frameId=frameId.substring(0,hashIndex);
}
返回frameId;
}
函数getBodyHeight()
{
变异高度;
高度;
远视;
if(文件高度)
{
高度=文件高度;
}
else if(document.body)
{
if(document.body.scrollHeight)
{
高度=滚动高度=document.body.scrollHeight;
}
if(document.body.offsetHeight)
{
高度=偏移视线=document.body.offsetHeight;
}
如果(滚动高度和离视(&F)
{
高度=数学最大值(滚动高度,离视);
}
}
返回高度;
}
函数getViewPortHeight()
{
var高度=0;
if(窗内高度)
{
高度=窗内高度-18;
}
else if((document.documentElement)和&(document.documentElement.clientHeight))
{
高度=document.documentElement.clientHeight;
}
else if((document.body)和&(document.body.clientHeight))
{
高度=document.body.clientHeight;
}
返回高度;
}
函数parseQueryString(url)
{
url=新字符串(url);
var queryStringValues=新对象();
var querystring=url.substring((url.indexOf('?'))+1),url.length;
var querystringSplit=querystring.split('&');
对于(i=0;i
但是没有成功-任何人都能看到我的错误所在。iframe仍然显示,但无法缩放。非常感谢!这是我的代码,用于通过外部网站调整iframe的大小。您需要在父级中插入代码(使用iframe代码)页面和外部网站中,因此,如果您没有编辑外部网站的权限,这将不起作用
- 本地(iframe)页面:只需插入一个代码段
- 远程(外部)页面:您需要一个“body onload”和一个包含所有内容的“div”。并且body的样式需要设置为“margin:0”
<IFRAME STYLE="width:100%;height:1px" SRC="http://www.remote-site.com/" FRAMEBORDER="no" BORDER="0" SCROLLING="no" ID="estframe"></IFRAME>
<SCRIPT>
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent,function(e) {
if (e.data.substring(0,3)=='frm') document.getElementById('estframe').style.height = e.data.substring(3) + 'px';
},false);
</SCRIPT>
var eventMethod=window.addEventListener?“addEventListener”:“attachEvent”;
var eventer=window[eventMethod];
var messageEvent=eventMethod==“attachEvent”?“onmessage”:“message”;
电动汽车
<IFRAME STYLE="width:100%;height:1px" SRC="http://www.remote-site.com/" FRAMEBORDER="no" BORDER="0" SCROLLING="no" ID="estframe"></IFRAME>
<SCRIPT>
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent,function(e) {
if (e.data.substring(0,3)=='frm') document.getElementById('estframe').style.height = e.data.substring(3) + 'px';
},false);
</SCRIPT>
<BODY onload="parent.postMessage('frm'+$('#master').height(),'*')" STYLE="margin:0">
<SCRIPT SRC="path-to-jquery/jquery.min.js"></SCRIPT>
<DIV ID="master">
your content
</DIV>