Javascript jquery与否/跨浏览器兼容iframe resize(即,Chrome、Safari、Firefox)
这是我的问题。我一直在努力寻找一个跨浏览器iframe调整大小的代码使用,我只是找不到一个。我所看到的只是一个浏览器中的问题。这就是我正在做的。我正在将iframe加载到jquery工具覆盖的页面中。这个iframe将加载页面的内容(在同一个域上,所以不必担心跨域)。当用户单击该表单上的某个操作时,iframe将再次需要调整大小(我让它在iframe增加时工作,但在iframe减少时不工作) 我有一个包含在iframe中的js文件,它有这个函数Javascript jquery与否/跨浏览器兼容iframe resize(即,Chrome、Safari、Firefox),javascript,jquery,iframe,cross-browser,Javascript,Jquery,Iframe,Cross Browser,这是我的问题。我一直在努力寻找一个跨浏览器iframe调整大小的代码使用,我只是找不到一个。我所看到的只是一个浏览器中的问题。这就是我正在做的。我正在将iframe加载到jquery工具覆盖的页面中。这个iframe将加载页面的内容(在同一个域上,所以不必担心跨域)。当用户单击该表单上的某个操作时,iframe将再次需要调整大小(我让它在iframe增加时工作,但在iframe减少时不工作) 我有一个包含在iframe中的js文件,它有这个函数 $(window).load(function()
$(window).load(function(){
parent.adjust_iframe();
});
该函数然后调用父页面函数,如下所示:
function adjust_iframe() {
//i have tried both body and html and both dont work in IE
var h = $("#overlayFrame").contents().find("body").height();
if(h==0)
h="500";
else
h=h+3;
$("#overlayFrame").css({'height': h});
window.scrollTo(0,0);
}
上面的代码在Chrome和firefox中运行良好,但在IE中不行
有人帮忙吗?我真的需要一个跨浏览器兼容的轻量级解决方案,它不涉及一些不受支持的重jquery插件
谢谢 试试看
$(window).load(function(){
var bodyHeight = $('body').height();
parent.adjust_iframe( bodyHeight );
});
及
因为问题可能是页面无法访问iframes内容。我有两个建议:
设置CSS高度时,请明确告诉它像素
$("#overlayFrame").css({'height': h + 'px'});
当iframe代码调用parent.adjust_iframe时,发送当前宽度/高度
parent.adjust_iframe($('body').height());
额外建议:做一点调查,告诉我们什么版本的IE以及为什么它不起作用。将一些警报放在那里,看看高度是否得到了导出等等。我搜索了我的存档文件,找到了设置iframe窗口新大小的脚本。它正在研究IE6,FF
/**
* Parent
*/
<iframe id="myframe" name="myframe" ...>
<script type="text/javascript">
var iframeids=["myframe"];
if (window.addEventListener) {
window.addEventListener("load", resizeCaller, false);
}else if (window.attachEvent) {
window.attachEvent("onload", resizeCaller);
} else {
window.onload=resizeCaller;
}
var iframehide="yes";
var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1];
var FFextraHeight=parseFloat(getFFVersion)>=0.1? 20 : 0;
function resizeCaller() {
var dyniframe=new Array();
for (i=0; i<iframeids.length; i++){
if (document.getElementById)
resizeIframe(iframeids[i]);
if ((document.all || document.getElementById) && iframehide=="no"){
var tempobj=document.all? document.all[iframeids[i]] : document.getElementById(iframeids[i]);
tempobj.style.display="";
}
}
};
function resizeIframe(frameid){
var currentfr=document.getElementById(frameid);
if (currentfr && !window.opera){
currentfr.style.display="";
if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight)
currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextraHeight;
else if (currentfr.Document && currentfr.Document.body.scrollHeight)
currentfr.height = currentfr.Document.body.scrollHeight;
if (currentfr.addEventListener)
currentfr.addEventListener("load", readjustIframe, false);
else if (currentfr.attachEvent){
currentfr.detachEvent("onload", readjustIframe);
currentfr.attachEvent("onload", readjustIframe);
}
}
};
function readjustIframe(loadevt) {
var crossevt=(window.event)? event : loadevt;
var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement;
if (iframeroot)resizeIframe(iframeroot.id);
};
function loadintoIframe(iframeid, url){
if (document.getElementById)document.getElementById(iframeid).src=url;
};
</script>
/**
* child iFrame html
*/
<body onResize="resizeIE()">
/**
*母公司
*/
变量iframeids=[“myframe”];
if(window.addEventListener){
addEventListener(“加载”,resizeCaller,false);
}else if(窗口附件){
attachEvent(“onload”,resizeCaller);
}否则{
window.onload=resizeCaller;
}
var iframehide=“是”;
var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf(“Firefox”)).split(“/”[1];
var FFextraHeight=parseFloat(getFFVersion)>=0.1?20 : 0;
函数resizeCaller(){
var dyniframe=新数组();
对于(i=0;ii)进行了警报,在IE8中,我得到一个警报,说高度是150。这是iframe调整前的原始大小
/**
* Parent
*/
<iframe id="myframe" name="myframe" ...>
<script type="text/javascript">
var iframeids=["myframe"];
if (window.addEventListener) {
window.addEventListener("load", resizeCaller, false);
}else if (window.attachEvent) {
window.attachEvent("onload", resizeCaller);
} else {
window.onload=resizeCaller;
}
var iframehide="yes";
var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1];
var FFextraHeight=parseFloat(getFFVersion)>=0.1? 20 : 0;
function resizeCaller() {
var dyniframe=new Array();
for (i=0; i<iframeids.length; i++){
if (document.getElementById)
resizeIframe(iframeids[i]);
if ((document.all || document.getElementById) && iframehide=="no"){
var tempobj=document.all? document.all[iframeids[i]] : document.getElementById(iframeids[i]);
tempobj.style.display="";
}
}
};
function resizeIframe(frameid){
var currentfr=document.getElementById(frameid);
if (currentfr && !window.opera){
currentfr.style.display="";
if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight)
currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextraHeight;
else if (currentfr.Document && currentfr.Document.body.scrollHeight)
currentfr.height = currentfr.Document.body.scrollHeight;
if (currentfr.addEventListener)
currentfr.addEventListener("load", readjustIframe, false);
else if (currentfr.attachEvent){
currentfr.detachEvent("onload", readjustIframe);
currentfr.attachEvent("onload", readjustIframe);
}
}
};
function readjustIframe(loadevt) {
var crossevt=(window.event)? event : loadevt;
var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement;
if (iframeroot)resizeIframe(iframeroot.id);
};
function loadintoIframe(iframeid, url){
if (document.getElementById)document.getElementById(iframeid).src=url;
};
</script>
/**
* child iFrame html
*/
<body onResize="resizeIE()">