说一下,弹出窗口还有内嵌一个iframe 这种模式应该是不科学的,但是公司项目里面就偏偏用到了,它这高低还不能只适应,所以我痛苦的日子来了

分析一下:

  首先window.showDialog 方法的时候会指定一下高度什么的,但是window里面内容可能撑爆它

然后window 中的iframe里面的内容页可能撑爆iframe

所以要想解决高度自适应的问题,就是从最低一级的iframe 开始高低只适应,但是同时在iframe 高度自适应之后得马上让window 也高度自适应

代码如下:

1、在window里面写下:

        var C_HEIGHT = "600px";
/**
* 模态窗口高度调整.
* 根据操作系统及ie不同版本,重新设置窗口高度,避免滚动条出现.
*/
function resetDialogHeight() {
if (window.dialogArguments == null) {
return; //忽略非模态窗口
}
var ua = navigator.userAgent;
var oFrame = document.getElementById("zyms"); var height = oFrame.document.body.scrollHeight;
if (ua.lastIndexOf("MSIE 6.0") != -1) {
if (ua.lastIndexOf("Windows NT 5.1") != -1) {
//alert("xp.ie6.0");
height = oFrame.document.body.offsetHeight;
// window.dialogHeight = (height + 102) + "px"; height = getHeight(height,102);
}
else if (ua.lastIndexOf("Windows NT 5.0") != -1) {
//alert("w2k.ie6.0");
height = oFrame.document.body.offsetHeight;
// window.dialogHeight = (height + 49) + "px";
height = getHeight(height, 49);
}
} else {
height = oFrame.document.body.scrollHeight;
height = getHeight(height, 10);
}
window.dialogHeight = parsePixel(height); }
/**
* Iframe窗口高度调整.
*/
function resetIframeHeight() {
var oFrame = document.getElementById("zyms");
oFrame.height = 0;
var fdh = (oFrame.Document ? oFrame.Document.body.scrollHeight : oFrame.contentDocument.body.offsetHeight);
oFrame.height = (fdh >= 500 && fdh <= 600 ? fdh : 600);
}
/**
* 把字符串转为像素单位
*/
function parsePixel(a) {
if(a==null || typeof a =='undifined' || a==""){
return '0px';
}
return a.toString().indexOf('px')>0 ? a.toString() : a+'px';
}
/**
* 设定高度的合理区间
* 不同浏览器边框等高度不一样,故增量也不一下
*/
function getHeight(height, increment) {
if (parseInt(height) > 500 && parseInt(height) < 600) {
height = (height + increment);
} else {
height = C_HEIGHT;
}
return height;
}
2、在iframe的load 事件中的代码:(当然iframe 的自适应也可以提成方法)
           <iframe id="zyms" frameborder="0" scrolling="yes" style="width:1000px;" onload=" resetIframeHeight();resetDialogHeight();">
</iframe>

3、iframe 关联的页面样式代码:

    <style type="text/css">
body
{
overflow-y:auto;
overflow-x:hidden;
}
</style>

弹出窗口内嵌iframe 框口自适应的更多相关文章

  1. ios11,弹出层内的input框光标错位 键盘弹出时,输入信息,光标一直乱跳

      之前开发了一个微信项目,维护期中苹果手机突然出现光标错位现象,经过排查,发现是最新的ios11系统的锅. 具体情况:弹出层使用position: fixed:弹出层内附带input/textare ...

  2. 调试一个Ext打开的window窗口内嵌Iframe的form提交问题

    一个奇怪的问题是:潜逃在iframe里的页面单独提交都是正常,放到iframe里面通过js调用在parent页面.提交总是被莫名其妙的杀掉. 确定js简单无错之后,继续看parent的处理逻辑,有这么 ...

  3. NSS_06 extjs弹出窗口上的文本框默认获得焦点

    这个问题其实是个窗户纸, 没什么技术含量,但是做的过程中有点曲折, 所以也记录下来吧. Ext.window.Window中有focus(o1, o2)方法, 作用:Try to focus this ...

  4. 深入浅出ExtJS 第七章 弹出窗口

    7.1 Ext.MessageBox 7.1 Ext.MessageBox //Ext.MessageBox为我们提供的alert/confirm/prompt等完全可以代替浏览器原生; 7.1.1 ...

  5. 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选

    原生Js封装的弹出框-弹出窗口-页面居中-多状态可选   实现了一下功能: 1.title可自定义 可拖拽 2.width height可以自定义 3.背景遮罩和透明度可以自定义 4.可以自己编辑弹出 ...

  6. 微信内置浏览器浏览H5页面弹出的键盘遮盖文本框的解决办法(转)

    最近在做微信公众号的内嵌页面,发现点击输入框时键盘盖住文本框,找到一段代码解决了这个问题. iOS和android手机都已亲测,需要的可以直接拷贝到代码中使用. js代码如下: $(function ...

  7. 20160513--js 弹出窗口带有iframe控件 备忘

    需要引用JQuery. /*! * 主 题:<页面弹出窗口> * 说 明:用于页面弹出的窗口. * 功能描述: * 1.生成弹出窗口,窗口内包括iframe控件: * 2.窗口弹出时,生成 ...

  8. Java Selenium (十二) 操作弹出窗口 & 智能等待页面加载完成 & 处理 Iframe 中的元素

    一.操作弹出窗口   原理 在代码里, 通过 Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄, 然 ...

  9. ajax弹出窗口

    提取自ZCMS的弹出框: 代替window.open.window.alert.window.confirm:提供良好的用户体验: 水晶质感,设计细腻,外观漂亮: 兼容ie6/7/8.firefox2 ...

随机推荐

  1. HDU 3468 Treasure Hunting(BFS+网络流之最大流)

    题目地址:HDU 3468 这道题的关键在于能想到用网络流.然后还要想到用bfs来标记最短路中的点. 首先标记方法是,对每个集合点跑一次bfs,记录全部点到该点的最短距离.然后对于随意一对起始点来说, ...

  2. 使用weight属性实现视图的居中显示

    有的时候我们开发一个产品的时候需要让其中某个控件的宽度或高度占据其父容器的宽度或高度的一半显示,这个时候由于设备尺寸的限制,做到在每个设备上都具有同样的效果的话,我们就需要用到weightSum属性和 ...

  3. FlashFXP使用教程

    点FlashFXP菜单栏“站点-站点管理”打开站点管理器.然后点新建站点,输入站点名称(随意),确定.   编辑站点管理器里新建的站点的相关信息,包括站点名称.地址.用户名称.密码等.编辑完成,点应用 ...

  4. python定制类(以Fib类为例)

    class Fib(object): def __init__(self): self.a, self.b = 0, 1 def __iter__(self): return self def __n ...

  5. Centos6.4 搭建Git服务器 (最简单的方法)

    下载 git-1.8.2.tar.gz tar -zvxf git-1.8.2.tar.gz cd git-1.8.2.2 sudo make prefix=/usr/local/git all su ...

  6. 对discuz的代码分析学习(一)目录结构

    主目录 DISCUZ用的是自己的框架,和其他框架应用一样属于单入口应用.主目录下的.php文件,大部分是应用的入口文件. home.php:家园入口,即论坛中类似博客的那个东西.index.php:首 ...

  7. JAVA并发,后台线程

    package com.xt.thinks21_2; import java.util.concurrent.TimeUnit; /** * 后台线程测试 * * @author Administra ...

  8. VC++中的类的内存分布(上)(通过强制转换,观察地址,以及地址里的值来判断)

    0.序 目前正在学习C++中,对于C++的类及其类的实现原理也挺感兴趣.于是打算通过观察类在内存中的分布更好地理解类的实现.因为其实类的分布是由编译器决定的,而本次试验使用的编译器为VS2015 RC ...

  9. Spring Boot MyBatis 连接数据库

    最近比较忙,没来得及抽时间把MyBatis的集成发出来,其实mybatis官网在2015年11月底就已经发布了对SpringBoot集成的Release版本,Github上有代码:https://gi ...

  10. Azure Traffic Manager 现可与 Azure 网站集成!

     编辑人员注释:本文章由 WindowsAzure 网站团队高级专家级工程师 Jim Cheshire撰写. AzureTraffic Manager 已经推出有一段时间,这是一种跨多个区域管理网 ...