弹出窗口内嵌iframe 框口自适应
说一下,弹出窗口还有内嵌一个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;
}
<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 框口自适应的更多相关文章
- ios11,弹出层内的input框光标错位 键盘弹出时,输入信息,光标一直乱跳
之前开发了一个微信项目,维护期中苹果手机突然出现光标错位现象,经过排查,发现是最新的ios11系统的锅. 具体情况:弹出层使用position: fixed:弹出层内附带input/textare ...
- 调试一个Ext打开的window窗口内嵌Iframe的form提交问题
一个奇怪的问题是:潜逃在iframe里的页面单独提交都是正常,放到iframe里面通过js调用在parent页面.提交总是被莫名其妙的杀掉. 确定js简单无错之后,继续看parent的处理逻辑,有这么 ...
- NSS_06 extjs弹出窗口上的文本框默认获得焦点
这个问题其实是个窗户纸, 没什么技术含量,但是做的过程中有点曲折, 所以也记录下来吧. Ext.window.Window中有focus(o1, o2)方法, 作用:Try to focus this ...
- 深入浅出ExtJS 第七章 弹出窗口
7.1 Ext.MessageBox 7.1 Ext.MessageBox //Ext.MessageBox为我们提供的alert/confirm/prompt等完全可以代替浏览器原生; 7.1.1 ...
- 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选
原生Js封装的弹出框-弹出窗口-页面居中-多状态可选 实现了一下功能: 1.title可自定义 可拖拽 2.width height可以自定义 3.背景遮罩和透明度可以自定义 4.可以自己编辑弹出 ...
- 微信内置浏览器浏览H5页面弹出的键盘遮盖文本框的解决办法(转)
最近在做微信公众号的内嵌页面,发现点击输入框时键盘盖住文本框,找到一段代码解决了这个问题. iOS和android手机都已亲测,需要的可以直接拷贝到代码中使用. js代码如下: $(function ...
- 20160513--js 弹出窗口带有iframe控件 备忘
需要引用JQuery. /*! * 主 题:<页面弹出窗口> * 说 明:用于页面弹出的窗口. * 功能描述: * 1.生成弹出窗口,窗口内包括iframe控件: * 2.窗口弹出时,生成 ...
- Java Selenium (十二) 操作弹出窗口 & 智能等待页面加载完成 & 处理 Iframe 中的元素
一.操作弹出窗口 原理 在代码里, 通过 Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄, 然 ...
- ajax弹出窗口
提取自ZCMS的弹出框: 代替window.open.window.alert.window.confirm:提供良好的用户体验: 水晶质感,设计细腻,外观漂亮: 兼容ie6/7/8.firefox2 ...
随机推荐
- 理解session机制
理解session机制 session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 当程序需要为某个客户端的请求创建一个session的时候,服务器首 ...
- 使用iscroll插件实现下拉刷新功能
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- iOS-BLE蓝牙开发
Demo地址:WEBlueToothManager 在写这个博客之前,空余时间抽看了近一个月的文档和Demo,系统给的解释很详细,接口也比较实用,唯独有一点,对于设备 的唯一标示,网上众说纷纭,在这里 ...
- poj2388 高速排序 模板题
/** \brief poj2388 * * \param date 2014/8/5 * \param state AC * \return memory time * qsort 784K 110 ...
- Hadoop 架构初探
对流行Hadoop做了一些最基本的了解,暂时没太大感觉,恩先记点笔记吧. = = Hadoop 基本命令及环境安装 一.下载虚拟机镜像 目前比较流行的有以下三个: (CHD) http://www.c ...
- java 正则表达式抽取
package com.achun.test; import java.util.regex.Matcher;import java.util.regex.Pattern; public class ...
- SQL语言整理归纳
- C++学习之this指针
C++学习之this指针 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对 ...
- php简单数据缓存类
公司手机触屏站 ,由于页面图片太多,所以需要做数据缓存,就随便写一个数据缓存类. 直接贴代码 <?php/**** fianl_m@foxmail.com* 缓存类* 把数据查询出,并序列化写入 ...
- Apache 开启 Https
1. 准备所需工具: 1) apache httpd2.4 浏览 2) Win32 OpenSSL v1.0.2d 浏览 2. 安装 2.1 安装Apache2.4服务 php环境搭建 浏览 2.2 ...