我正在尝试使用javascript和Jquery动态设置iframe的高度。
但是由于理由这不适用于Ie8&铬。 (但它在firefox上工作正常)
有人可以帮忙吗?由于
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();
}
答案 0 :(得分:1)
您的代码似乎有点复杂,您可以执行以下操作:
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";
}
}
应该适用于所有主流浏览器。
答案 1 :(得分:1)
通过更改一行,本规范适用于所有浏览器。
而不是使用
var frame = document.getElementsByTagName('iframe')[0];
使用
var frame = document.getElementById("ctl00_ctl00_ContentPlaceHolder1_Options_iframe");
问题是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();
}