在工作中遇到了一下问题
需求
需要在界面初始化之后,根据A div的高度设定B div的高度。其中A div是固定表示的。
实现
$(function(){ //省略... var c = $("#A").height(); //在Firefox和IE上运行时,c的值有可能会为0 $("#B").css("height", c + "px"); //省略... })
以上代码在chrome上运行正常,在Firefox和IE上,有几率运行失败,c的值有可能会为0
调查
1,经查,【c=0】时,【$(document).height() == 0】,界面显示空白。所以怀疑,在执行以上代码时,画面描绘尚未完成。
2,以上代码改为$(window).load时执行,问题依然存在
$(window).load(function(){ //省略... var c = $("#A").height(); //在Firefox和IE上运行时,c的值有可能会为0 $("#B").css("height", c + "px"); //省略... })
对应方法
在进行界面初始化时,检查document的状态,如果document尚未初始化完成,则使用timeout进行等待,并设置回调,当document初始化完成后,实行回调函数。该部分做为共通处理。
//document状态判断 function isDocumentReady(){ var h = $(document).height(); //测试发现,在IE上时,document虽然初始化完了,但目标对象的初始化可能尚未完成 //添加以下代码,等待目标对象的初始化完成 if($("#A").length != 0){ h = $("#A").height(); } return h > 0; } //设置Timeout,等待界面初始化完成 function waitForReady(callback){ if(isDocumentReady() > 0){ window[callback](); }else{ setTimeout("waitForReady('"+ callback +"')", 100); } }
每个界面需要,编写并注册回调函数,调用状态检查函数
$(window).load(function(){ if(isDocumentReady()){ initPage(); }else{ waitForReady('initPage'); } }) function initPage(){ //省略... var c = $("#A").height(); $("#B").css("height", c + "px"); //省略... })
课题
对$(document).ready,$(window).load的执行时机,网上说是在【页面载入后执行】【文档都准备就绪】之后执行。不是很明白,所谓的【页面载入】和【文档准备就绪】是什么概念,如果说页面载入了或文档准备就绪了,那此时界面的布局,描画,渲染是什麽是不是也应该完成了?那上面的问题是什么原因,为什么$(document).height() 会等于0。是Firfox和IE的BUG?
参考
相关推荐
而在Firefox中,`$(document).ready()`通常会在DOM解析完成时立即执行,无论页面是否有嵌入的frame。 通过查看jQuery的源码,我们可以看到在IE浏览器中,`$(document).ready()`实际上被绑定到了`window.load`事件上...
Firefox 29+ Safari 8+ Chrome33+ 歌剧23+ 安装 npm install --save when-dom-ready 或进行快速测试: < script src =" https://unpkg.com/when-dom-ready " > </ script > 用法 import ...
7. **事件监听**:可能使用事件监听器(如`window.onload`或`document.ready`)来确保在页面完全加载后才执行打印操作。 8. **错误处理**:成熟的源码会包含错误处理机制,以防打印过程中出现问题。 学习并理解这...
标题 "js 复制到剪贴板 ,兼容支持火狐firefox 和 ie" 涉及的是JavaScript编程中实现文本复制到系统剪贴板的功能,并且这个功能需要在Firefox和IE浏览器上都能正常工作。在Web开发中,允许用户将特定内容复制到剪贴板...
这个是上次在博客园看到的一篇文章,经测试,确实比jquery的$(document).ready(function(){….})更快,并且在ie和火狐等主流浏览器上都没问题, 忘了原创是谁了,如果主人看到可以联系我, 我会立刻加上原文出处的,...
本文将详细讲解如何实现一个实用的右下角弹出菜单,该菜单兼容Firefox、Internet Explorer 6 (IE6) 和 Internet Explorer 7 (IE7) 浏览器,并具有自定义关闭和自动消失功能。 首先,让我们了解弹出菜单的基本构建。...
"ie firefox做了一个遮罩层"这个标题表明我们将讨论如何在Internet Explorer(IE)和Firefox这两个主流浏览器上实现遮罩层的功能。 在Internet Explorer和Firefox中创建一个兼容的遮罩层涉及到CSS和JavaScript的...
在网页开发中,确保图片在不同的浏览器上,如Internet Explorer(IE)、Firefox和Chrome中能够正确缩放是一项重要任务。由于各个浏览器对CSS、JavaScript等技术的实现可能存在差异,因此需要采用兼容性处理来实现这...
这个问题在不同的浏览器中可能会有不同的处理方式,尤其是对于老版本的IE和Firefox。本文将详细讲解如何利用jQuery来实现在页面上显示用户上传的本地图片,同时确保在IE和Firefox等浏览器中的兼容性。 首先,我们...
本教程将深入讲解如何利用jQuery库来实现一个在IE6、IE7以及Firefox浏览器下都能正常工作的左侧树形菜单。jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理和动画效果,使得开发者能够更高效地构建动态...
JQuery.Uploadify插件设计时考虑了广泛的浏览器兼容性,包括主流的Chrome、Firefox、Safari、Opera以及对IE8及以上的支持。为了确保在IE8中正常工作,你需要确保jQuery库版本适合IE8,通常使用jQuery 1.x系列。同时...
本文将详细探讨如何实现一个“向上下左右不间断无缝滚动图片的效果”,并确保该效果在火狐(Firefox)和IE(Internet Explorer)浏览器上兼容。 首先,我们需要了解无缝滚动的核心原理。这种效果通常通过JavaScript...
在本篇文章中,主要介绍了如何编写兼容IE和Firefox火狐浏览器的回车事件处理代码。这一需求源于在不同浏览器间,相同的JavaScript代码可能无法达到相同的效果,尤其是在实现表单提交或触发特定事件时。因此,开发者...
在本文中,我们将深入探讨如何针对IE8、Firefox、Safari等多浏览器环境创建一个无缝、流畅的图片滚动效果。 首先,我们需要理解不同浏览器对JavaScript和CSS的支持程度。IE8相对较老,不支持某些现代的JavaScript ...
本文将深入探讨如何使用jQuery实现一个简洁版的图片上传预览功能,这个功能可以兼容包括IE和Firefox在内的多种浏览器。 首先,我们需要理解图片预览的基本原理。在用户选择文件之前,我们无法直接预览图片。但是,...
本文将详细讲解如何使`textarea`在用户填写完文本后自动获取焦点,这一功能对于提高用户体验非常关键,特别是考虑到它在不同浏览器(如IE、Firefox和Chrome)中的兼容性。 首先,我们要明白`textarea`的基本结构。...
在标准W3C浏览器中,如Firefox、Chrome和Safari,它使用`DOMContentLoaded`事件来监听DOM树的构建完成。在旧版的Internet Explorer中,由于不支持`DOMContentLoaded`,它依赖于`onreadystatechange`事件和`document....
这个"js jquery复制到剪切板"的解决方案针对的是一个关键的问题:跨浏览器的兼容性,确保在360浏览器、Internet Explorer(IE)以及Firefox等不同浏览器上都能正常工作。 首先,我们要理解在JavaScript中实现复制...
本文将详细讲解如何利用jQuery和CSS3实现一个支持IE9及以上、Chrome、Safari、Firefox和Opera等主流浏览器的手风琴图片折叠滑开代码。 一、jQuery基础 jQuery是一个轻量级的JavaScript库,它的出现极大地简化了...