动态设置iframe高度;不处理ie和chrome
dynamically setting the iframe height; not working on ie and chrome
我正在尝试使用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();
}
您的代码似乎有点复杂,您可以执行以下操作:
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];
使用
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();
}
相关文章:
- IE中的Onload()处理程序没有响应
- VBA-处理IE自动化弹出的Javascript
- 脚本无法处理.load'IE中的ed DIV
- 锚标记重新加载页面,而不是在IE中处理onclick
- 是避免IE内存泄漏所需的取消挂起事件处理程序
- IE 在使用 clientscript.registerstartup 调用处理程序之前停止执行 JavaScript
- 如何处理IE 8中缺少JavaScript Object.bind()方法
- 更改“input”事件处理程序中的输入值可防止在Chrome和IE中触发“更改”事件(但在Firefox中则不然)
- 在IE / FF中使用getElementsByTagName时,自定义标签的处理方式不同
- IE 标准与怪癖处理偏移左
- 在 IE 8 中使用 AJAX 处理http_request
- 处理IE填写表格c#
- 处理IE中的点击
- 动态设置iframe高度;不处理ie和chrome
- excanvas.js无法使用动态加载脚本处理IE
- 编写Javascript时如何处理IE
- 硒如何处理IE找不到元素
- ASP.NET容器验证=“;false”;无法处理IE中的链接按钮
- 如何处理IE中多次刷新函数的框背景颜色
- 无法让 img 处理 ie 中的事件