获取iframe(angular 动态页面)高度
问题比较特殊,google了好久才得到启示
开发的angular页面,需要嵌入到客户的web页中,以iframe方式。由于iframe的高度需要指定,而angular动态生成机制导致页面高度会随时变化,
就会出现2个滚动条,一个是页面本身,一个是iframe里的。
解决方法如下:
1.写一个directive监听angular的$digest,实时获取body高度,通过 HTML5 postMessage方式传出
module.directive('ngAppFrame', function () {
return {
restrict: 'EA',
link: function (scope, element, attrs) {
element.css("display", "block");
scope.$watch(
function () {
return element[].offsetHeight;
},
function (newHeight, oldHeight) {
if (newHeight != oldHeight) {
setTimeout(function () {
var height = attrs.minheight ? newHeight + parseInt(attrs.minheight) : newHeight;
var message = height;
window.parent.postMessage(message, "*");
}, );// timeout needed to wait for DOM to update
}
}
);
}
}
});
页面加入该directive
<div class="container-fluid " ui-view ng-app-frame></div>
2.iframe 父窗口监听message,获取iframe传出的动态高度并设定
<script>
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
var iframe = document.getElementById("win");
iframe.height = event.data;
}
</script>
<body>
<div class="axaHeaderbg"></div>
<div class="axa_inner_b2c">
<iframe src="../../whatever" id="win" width="100%" height="100%" scrolling="no" frameborder="" marginwidth="" marginheight=""></iframe>
</div>
<div class="axaFooterbg"></div>
</body>
获取iframe(angular 动态页面)高度的更多相关文章
- Python3.x:selenium获取iframe内嵌页面的源码
Python3.x:selenium获取iframe内嵌页面的源码 前言 在一些网页中经常会看到ifrmae/frame标签,iframe是嵌入式框架一般用来在已有的页面中嵌入另一个页面,当一个元素在 ...
- javascript获取iframe框架中页面document对象,获取子页面里面的内容,iframe获取父页面的元素,
javascript获取iframe框架中,加载的页面document对象 因为浏览器安全限制,对跨域访问的页面,其document对象无法读取.设置属性 function getDocument(i ...
- 跨域下使用获取iframe的父页面URL
通常情况下,我们获取iframe父页面的url很简单:parent.location或top.location即可,但前提是它们遵循同源策略. 当iframe与父页面不属于同一个域名时,像上面的获取会 ...
- 主页面获取iframe 的子页面方法。
父页面parent.html <html> <head> <script type="text/javascript"> function sa ...
- 微信小程序获取windowHeight出现不同页面高度不一致问题及解决方案
在页面中调用wx.getSystemInfo即可获取当前页面的屏幕高度,如果写在app.js里面或者带有系统tab页面里面,获取的windowHeight会比不是tab的页面少48: 含有的TabBa ...
- iframe自适应当前页面高度
<style type="text/css"> *{margin:0;padding:0;list-style-type:none;} </style> & ...
- iframe脸面的页面和父页面之间的交互方法
1.iframe父页面修改iframe中的页面的信息 var obj = document.getElementById("iframeId").contentWindow; ...
- Js动态获取iframe子页面的高度////////////////////////zzzz
Js动态获取iframe子页面的高度 Js动态获取iframe子页面的高度总结 问题的缘由 产品有个评论列表引用的是个iframe,高度不固定于是引发这个总结. 方法1:父级页面获取子级页面的高度 ...
- 获取iframe子页面内容高度给iframe动态设置高度
<!DOCTYPE html><html> <head> <meta charset="UTF-8" /> <meta nam ...
随机推荐
- PL/SQL集合(一):记录类型(TYPE 类型名称 IS RECORD)
记录类型 利用记录类型可以实现复合数据类型的定义: 记录类型允许嵌套: 可以直接利用记录类型更新数据. 传统操作的问题 对于Oracle数据类型,主要使用的是VARCHAR2.NUMBER.DATE等 ...
- spring boot tomcat 线程数 修改初始线程数 统计性能 每百次请求耗时
[root@f java]# tail -30 nohup.outsearchES-TimeMillisSpent:448P->1602@fT->http-nio-8080-exec-3t ...
- python redis基本概念简单操作
转自:http://www.cnblogs.com/melonjiang/p/5342383.html 一.redis redis是一个key-value存储系统.和Memcached类似,它支持存储 ...
- 【mlflow】mlflow打包、启动、换用mysql backend、mysql配置
mlflow是一个自动化机器学习平台,支持python2也支持python3 mlflow9.0添加了数据库作为tracking data的存储: https://github.com/mlflow/ ...
- web前端开发http-server
windows环境下需先安装npm 安装 npm install -g http-server http-server -a hostip -p port
- android gson使用
第一步注册: compile 'com.google.code.gson:gson:2.6.2' 第二步初始化: Gson gson = new GsonBuilder() .setLenient( ...
- C#基础整理(一)
1.什么是.net? .net有.net平台和.Net Framework框架. .net平台是包含.net framework框架. framework框架提供稳定的运行环境来保证基于.Net平台开 ...
- [3D]1.绘制三角形
作为一个.Net程序员学习3D开发好尴尬啊,因为不论是OpenGL还是Direct3D都是用C/C++开发的比较多.虽然有计划使用C++进行开发,但是平时还是C#使用的多.很少用C++做东西,如果仅仅 ...
- Spark Core (一) 什么是RDD的Transformation和Action以及Dependency(转载)
1. Spark的RDD RDD(Resilient Distributed Datasets),弹性分布式数据集,是对分布式数据集的一种抽象. RDD所具备5个主要特性: 一组分区列表 计算每一个数 ...
- python16_day38【flask】
一.简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预 ...