Javascript 动态设置iframe高度;不在ie和chrome上工作
我试图使用javascript和Jquery动态设置iframe的高度 但由于某些原因,这在Ie8和chrome中不起作用。(但在firefox上运行良好) 有人能帮忙吗 谢谢Javascript 动态设置iframe高度;不在ie和chrome上工作,javascript,jquery,iframe,cross-browser,Javascript,Jquery,Iframe,Cross Browser,我试图使用javascript和Jquery动态设置iframe的高度 但由于某些原因,这在Ie8和chrome中不起作用。(但在firefox上运行良好) 有人能帮忙吗 谢谢 function resizePanel() { window.console.log("ran the resize panel function"); var frame = document.getElementsByTagName('iframe')[0]; if(frame
function resizePanel() {
window.console.log("ran the resize panel function");
var frame = document.getElementsByTagName('iframe')[0];
if(frame != null) {
var height;
if(self.innerHeight) {
window.console.log("ran the self.innerHeight");
height= self.innerHeight;
}
else if (document.documentElement && (document.documentElement.clientHeight)) {
window.console.log("ran the clientHeight");
height = document.documentElement.clientHeight;
}
else if(document.body) {
window.console.log("ran the document.body");
height = document.body.clientHeight;
}
frame.style.height = height - 165 + 'px'
}};
$(document).ready(function() {
resizePanel();
$(window).resize(function() {
resizePanel();
});
});
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(EndRequest);
function EndRequest(sender, args) {
resizePanel();
}
您的代码似乎有点复杂,您可以执行以下操作:
function resizePanel() {
window.console.log("ran the resize panel function");
var frame = document.getElementsByTagName('iframe')[0];
if(frame != null) {
frame.style.height = frame.contentWindow.document.body.scrollHeight + "px";
}
}
应该适用于所有主要浏览器。通过更改一行代码,所有浏览器上的代码都可以正常工作 而不是使用
var frame = document.getElementsByTagName('iframe')[0];
使用
问题是Chrome和IE都隐藏了iFrame,当我们使用getElementsByTagName时,它会返回所有iFrame的数组。所以我们尝试访问[0]索引,它引用了其他一些iframe
我希望这会有所帮助
完整的代码是:
function resizePanel() {
var frame = document.getElementById("ctl00_ctl00_ContentPlaceHolder1_Options_iframe");
if(frame != null) {
var height;
if(self.innerHeight) {
height= self.innerHeight;
}
else if (document.documentElement && (document.documentElement.clientHeight)) {
height = document.documentElement.clientHeight;
}
else if(document.body) {
height = document.body.clientHeight;
}
frame.style.height = height - 165 + 'px'
}};
$(document).ready(function() {
resizePanel();
$(window).resize(function() {
resizePanel();
});
});
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(EndRequest);
function EndRequest(sender, args) {
resizePanel();
}
function resizePanel() {
var frame = document.getElementById("ctl00_ctl00_ContentPlaceHolder1_Options_iframe");
if(frame != null) {
var height;
if(self.innerHeight) {
height= self.innerHeight;
}
else if (document.documentElement && (document.documentElement.clientHeight)) {
height = document.documentElement.clientHeight;
}
else if(document.body) {
height = document.body.clientHeight;
}
frame.style.height = height - 165 + 'px'
}};
$(document).ready(function() {
resizePanel();
$(window).resize(function() {
resizePanel();
});
});
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(EndRequest);
function EndRequest(sender, args) {
resizePanel();
}