`

在Firefox,IE上使用document.ready时的相关问题

    博客分类:
  • JS
 
阅读更多

在工作中遇到了一下问题

需求

需要在界面初始化之后,根据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?

 

参考

js 把字符串当函数执行的方法

JS中setTimeout()的用法详解

setTimeout传参数 传递多个参数的问题

 

分享到:
评论

相关推荐

    jquery的$(document).ready()和onload的加载顺序

    而在Firefox中,`$(document).ready()`通常会在DOM解析完成时立即执行,无论页面是否有嵌入的frame。 通过查看jQuery的源码,我们可以看到在IE浏览器中,`$(document).ready()`实际上被绑定到了`window.load`事件上...

    when-dom-ready:21世纪的$(document).ready()

    Firefox 29+ Safari 8+ Chrome33+ 歌剧23+ 安装 npm install --save when-dom-ready 或进行快速测试: < script src =" https://unpkg.com/when-dom-ready " > </ script > 用法 import ...

    IE直接打印源码.rar

    7. **事件监听**:可能使用事件监听器(如`window.onload`或`document.ready`)来确保在页面完全加载后才执行打印操作。 8. **错误处理**:成熟的源码会包含错误处理机制,以防打印过程中出现问题。 学习并理解这...

    js 复制到剪贴板 ,兼容支持火狐firefox 和 ie

    标题 "js 复制到剪贴板 ,兼容支持火狐firefox 和 ie" 涉及的是JavaScript编程中实现文本复制到系统剪贴板的功能,并且这个功能需要在Firefox和IE浏览器上都能正常工作。在Web开发中,允许用户将特定内容复制到剪贴板...

    比Jquery的document.ready更快的方法

    这个是上次在博客园看到的一篇文章,经测试,确实比jquery的$(document).ready(function(){….})更快,并且在ie和火狐等主流浏览器上都没问题, 忘了原创是谁了,如果主人看到可以联系我, 我会立刻加上原文出处的,...

    实用右下角弹出菜单(支持firefox、IE6、IE7)

    本文将详细讲解如何实现一个实用的右下角弹出菜单,该菜单兼容Firefox、Internet Explorer 6 (IE6) 和 Internet Explorer 7 (IE7) 浏览器,并具有自定义关闭和自动消失功能。 首先,让我们了解弹出菜单的基本构建。...

    ie firefox做了一个遮罩层

    "ie firefox做了一个遮罩层"这个标题表明我们将讨论如何在Internet Explorer(IE)和Firefox这两个主流浏览器上实现遮罩层的功能。 在Internet Explorer和Firefox中创建一个兼容的遮罩层涉及到CSS和JavaScript的...

    兼容IE,firefox,chrome图片缩放功能

    在网页开发中,确保图片在不同的浏览器上,如Internet Explorer(IE)、Firefox和Chrome中能够正确缩放是一项重要任务。由于各个浏览器对CSS、JavaScript等技术的实现可能存在差异,因此需要采用兼容性处理来实现这...

    利用juery将上传的本地图片在页面上显示(兼容IE和firefox)

    这个问题在不同的浏览器中可能会有不同的处理方式,尤其是对于老版本的IE和Firefox。本文将详细讲解如何利用jQuery来实现在页面上显示用户上传的本地图片,同时确保在IE和Firefox等浏览器中的兼容性。 首先,我们...

    利用JQuery实现网页左侧树形菜单(IE6 IE7 Firefox下测试通过)

    本教程将深入讲解如何利用jQuery库来实现一个在IE6、IE7以及Firefox浏览器下都能正常工作的左侧树形菜单。jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理和动画效果,使得开发者能够更高效地构建动态...

    Asp使用JQuery.Uploadify上传范例,测试可用,除了主流的浏览器外还可以兼容IE8以上浏览器

    JQuery.Uploadify插件设计时考虑了广泛的浏览器兼容性,包括主流的Chrome、Firefox、Safari、Opera以及对IE8及以上的支持。为了确保在IE8中正常工作,你需要确保jQuery库版本适合IE8,通常使用jQuery 1.x系列。同时...

    向上下左右不间断无缝滚动图片的效果(兼容火狐和IE)

    本文将详细探讨如何实现一个“向上下左右不间断无缝滚动图片的效果”,并确保该效果在火狐(Firefox)和IE(Internet Explorer)浏览器上兼容。 首先,我们需要了解无缝滚动的核心原理。这种效果通常通过JavaScript...

    兼容IE与firefox火狐的回车事件(js与jquery)

    在本篇文章中,主要介绍了如何编写兼容IE和Firefox火狐浏览器的回车事件处理代码。这一需求源于在不同浏览器间,相同的JavaScript代码可能无法达到相同的效果,尤其是在实现表单提交或触发特定事件时。因此,开发者...

    兼容IE、FireFox、Safari多浏览器的图片不间断滚动

    在本文中,我们将深入探讨如何针对IE8、Firefox、Safari等多浏览器环境创建一个无缝、流畅的图片滚动效果。 首先,我们需要理解不同浏览器对JavaScript和CSS的支持程度。IE8相对较老,不支持某些现代的JavaScript ...

    jQuery上传图片预览,简洁版,可兼容IE和FIREFOX

    本文将深入探讨如何使用jQuery实现一个简洁版的图片上传预览功能,这个功能可以兼容包括IE和Firefox在内的多种浏览器。 首先,我们需要理解图片预览的基本原理。在用户选择文件之前,我们无法直接预览图片。但是,...

    textarea在文本之后获得焦点,适合ie,火狐,谷歌

    本文将详细讲解如何使`textarea`在用户填写完文本后自动获取焦点,这一功能对于提高用户体验非常关键,特别是考虑到它在不同浏览器(如IE、Firefox和Chrome)中的兼容性。 首先,我们要明白`textarea`的基本结构。...

    jQuery的ready方法详解

    在标准W3C浏览器中,如Firefox、Chrome和Safari,它使用`DOMContentLoaded`事件来监听DOM树的构建完成。在旧版的Internet Explorer中,由于不支持`DOMContentLoaded`,它依赖于`onreadystatechange`事件和`document....

    js jquery复制到剪切板,绝对能用,兼容360 ie 火狐等浏览器

    这个"js jquery复制到剪切板"的解决方案针对的是一个关键的问题:跨浏览器的兼容性,确保在360浏览器、Internet Explorer(IE)以及Firefox等不同浏览器上都能正常工作。 首先,我们要理解在JavaScript中实现复制...

    基于jQuery+CSS3 手风琴图片折叠滑开代码(支持ie9 chrome safari firefox opera).zip

    本文将详细讲解如何利用jQuery和CSS3实现一个支持IE9及以上、Chrome、Safari、Firefox和Opera等主流浏览器的手风琴图片折叠滑开代码。 一、jQuery基础 jQuery是一个轻量级的JavaScript库,它的出现极大地简化了...

Global site tag (gtag.js) - Google Analytics