动态插入的CSS(通过链接)在帧加载后应用
Dynamically inserted CSS (via link) applied after frame onload
我有一个iframe
,我在运行时填充src
:
$(iframe).attr("src", "<my html page uri>");
紧随其后:
$(iframe).load(function() {
//Copy style from parent
if (setStyles) {
setStyles = false;
var linkTags = window.parent.document.head.getElementsByTagName("link");
for (var i = 0; i < linkTags.length; i++) {
if (linkTags[i].rel === "stylesheet") {
var node = linkTags[i].cloneNode();
node.href = linkTags[i].href;
this.contentDocument.head.appendChild(node);
}
}
}
//add some elements dynamically
var windowHeight = iframe.contentWindow.document.body.scrollHeight;
$(iframe).height(windowHeight + 'px');
});
最后两行代码用于在我添加一些元素后调整框架的大小以适合其内容。
这是有效的,但问题是我动态添加的CSS调整了一些元素的大小,这意味着框架的高度又错了。
我是否需要链接动态CSS添加和框架的大小调整,以便CSS应用到元素之前,重新大小发生?
如果有,怎么做?由于
必须等到CSS文件加载后才能读取scrollHeight属性。为了实现它,你可以在调用appendChild之前向链接节点添加一个onload事件处理程序。
$(node).load(function() {
var windowHeight = iframe.contentWindow.document.body.scrollHeight;
$(iframe).height(windowHeight + 'px');
} ) ;
// Before this:
this.contentDocument.head.appendChild(node);
相关文章:
- Emberjs应用程序加载在除Index之外的所有路由上
- 跟踪在页面加载时应用内联样式的JavaScript
- 使用jquery.load('pageName')方法时,未从应用程序缓存加载Html页
- 在web应用程序中的新搜索中重新加载搜索结果(不带jQuery)
- iframe响应为302时重新加载应用程序
- 安卓 - 加载应用程序时检查切换按钮的状态
- AngularJS - 预加载应用程序设置
- 加载应用程序.js在设备中准备好煎茶触摸科尔多瓦应用程序
- angularjs将加载应用程序延迟到指定条件
- Meteor不渲染css,并且在使用外部DDP Meteor实例时不断重新加载应用程序
- 使用AngularJS在加载应用程序时将用户导航到登录页面或其他页面
- 当初始化swiffy时,Safari会重新加载应用程序
- 如何在加载应用程序之前添加搜索功能
- Require.js加载应用的所有资源,包括Polymer
- JavaScript:在页面初始化时加载应用程序环境变量的最佳方式是什么
- 如何在使用选项卡集加载应用程序时使选项卡激活
- 如何在第一次加载应用程序时显示加载指示符
- Jquery Ajax在第一次加载应用程序时触发错误回调
- React Native:重新加载应用程序或强制重新发布程序
- 如何在加载应用$rootScope中的所有部分后运行自定义 JavaScript