调整iframe的大小-是否可以访问外部url代码

调整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大小的问题,但所有这些问题都无法访问外部url。在这种情况下,我会。我可以在head标记中插入脚本。我试图使用插入到包含iframe的主页头中的脚本(我知道开始和结束帧标记是错误的-它不允许我将它们留在:

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>