`
快乐_虫
  • 浏览: 7571 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

创建js,onload触发callback的方法实现(兼容主流浏览器)

阅读更多

之前在新浪博客上写了好几天的博客,一发表的时候内容全没了!愤怒啊!即使代码里有script标签,发表时候你好歹提示一下,取消发表或者所有内容给我复制到剪贴板啊!这用户体验真是差的要命!

转入正题:这里就不写仔细的测试兼容性的代码以及测试结果了,直接简述兼容问题,及解决方案,以及完整代码了!

兼容性问题:
    chrome等标准浏览器支持onload事件
    IE8、9等版本不支持onload事件,用onreadystatechange事件替代

    问题1:IE9等既支持onload事件,也支持onreadystatechange事件,所以回调方法有可能会被执行2次


兼容代码如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script type="text/javascript">
        /*
         * @param {string} src 要加载的js路径
         * @param {function} fnCallback 加载完成后执行的回调方法
         */
        function loadJs(src, fnCallback) {
            // 创建script标签对象
            var oScript = document.createElement('script');
            // 有fnCallback参数的时候,绑定onload 和 onreadystatechange事件
            if (fnCallback) {
                oScript.onload = oScript.onreadystatechange = function () {
                    // onload 和 onreadystatechange 事件执行同一个方法
                    if (
                        // 不支持 onreadystatechange 事件的浏览器---支持onload
                        !this.readyState
                        // IE某版本,
                        || this.readyState === "complete")
                    {
                        // 防止IE内存泄漏
                        oScript.onload = oScript.onreadystatechange = null;
                        // 回调执行
                        fnCallback();
                    }
                }
            }
            var oHead = document.getElementsByTagName('head')[0];
            oScript.type = 'text/javascript';
            oScript.src = 'testBlock.js';
            oHead.appendChild(oScript);
        }

        // 方法执行
        loadJs('testBlock.js', function () {alert('执行回调方法成功!');})
    </script>
</body>
</html>
 
分享到:
评论

相关推荐

    兼容主流浏览器的图片预览

    "兼容主流浏览器的图片预览"这一主题旨在确保不论用户使用何种浏览器,都能正常预览图片。在这个场景下,我们将主要探讨如何使用jQuery实现跨浏览器的图片预览功能,并探讨相关的技术和最佳实践。 首先,我们需要...

    js代码 播放列表收缩展开 播放列表 左侧二级菜单 兼容主流浏览器

    在兼容性方面,由于项目明确指出兼容主流浏览器,开发者可能使用了跨浏览器的API和方法,比如使用`window.onload`或`DOMContentLoaded`事件来确保DOM加载完成后再执行JavaScript代码,避免了依赖于特定浏览器的行为...

    图片上传预览(兼容所有主流浏览器)

    本技术讨论主要围绕“图片上传预览(兼容所有主流浏览器)”这一主题展开,我们将深入探讨如何利用JavaScript实现这一功能,并确保其在各种主流浏览器中运行良好。 首先,我们来理解一下“图片上传预览”的概念。当...

    ZeroClipboard实现兼容多浏览器复制

    标题中的“ZeroClipboard实现兼容多浏览器复制”是指一个JavaScript库,ZeroClipboard,它允许用户在网页上通过模拟鼠标右键点击复制文本到剪贴板,从而实现跨浏览器的复制功能。这个库尤其重要,因为浏览器的安全...

    jquery实现选择图片预览,兼容各大主流浏览器

    本文将详细介绍如何使用jQuery实现一个兼容各大主流浏览器(如谷歌、IE、360浏览器、火狐等)的图片预览功能。 ### 1. jQuery简介 jQuery是一个快速、简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画...

    js的image onload事件使用遇到的问题

    标题中所提到的知识点是“js的image onload事件使用遇到的问题”,这涉及到JavaScript中Image对象的onload事件处理。在Web前端开发中,onload事件是一个非常重要的概念,主要用于处理图片或者其他资源加载完成后的...

    iOS8风格loading加载进度条代码(CSS3 JS),适合做网页的加载过渡页,兼容主流浏览器

    本篇文章将详细讲解如何利用CSS3和JavaScript来实现这种iOS8风格的加载进度条,以及如何将其应用到网页的加载过渡页上,同时确保其在主流浏览器中的兼容性。 首先,我们需要理解CSS3的关键特性。CSS3允许我们创建...

    30多种上下左右滚动代码兼容各种浏览器

    本文将详细讲解30多种上下左右滚动代码,这些代码经过优化,能够兼容各种主流浏览器,包括IE、Firefox、Chrome、Safari和Opera等。 一、连续滚动 连续滚动是最基础的滚动效果,它可以让文字或图片持续不断地从一侧...

    Firefox浏览器兼容JS脚本

    ### Firefox浏览器兼容JS脚本详解 #### 一、概述 随着Web技术的不断发展与进步,JavaScript作为前端开发的重要组成部分,在不同浏览器之间的兼容性问题显得尤为关键。本文将围绕Firefox浏览器与Internet Explorer...

    iframe自适应高度(兼容多种浏览器)

    ### iframe自适应高度(兼容多种浏览器) 在网页开发过程中,`iframe`是一种常用的元素,用于在当前页面中嵌入另一个HTML文档。然而,默认情况下,`iframe`的高度是固定的,这可能会导致内容显示不完全或者出现不必要...

    Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器

    `Easy.Ajax` 是一个JavaScript库,用于处理Ajax(异步JavaScript和XML)请求,它具有文件上传功能并兼容所有主流浏览器。以下是对`Easy.Ajax`类的部分源代码的详细解析: 1. **Proxy Pool**: `proxyPool` 属性是...

    兼容多种浏览器的公告栏文字滚动效果js代码

    总结来说,实现兼容多种浏览器的公告栏文字滚动效果主要涉及JavaScript DOM操作、CSS动画以及浏览器兼容性处理。理解这些基础知识,结合实际的“MarqueeTop.html”文件,可以帮助开发者创建出更高效、更灵活的滚动...

    js中图片实时预览(兼容浏览器)

    如果浏览器不支持File API,则采用兼容模式,利用`document.selection.createRange()`方法和滤镜效果来实现图片显示。 知识点五:安全性问题 由于浏览器的安全性限制,我们无法直接访问文件路径。这意味着我们只能...

    js预览图片兼容所有浏览器

    在JavaScript编程中,预览图片是一项常见的需求,尤其是在网页上传图片功能中。...通过这样的方式,我们可以实现一个完整的、跨浏览器的JavaScript图片预览功能,满足包括IE6、7、8在内的各种浏览器的兼容需求。

    基于JavaScript判断浏览器到底是关闭还是刷新(超准确)

    本文介绍了通过JavaScript判断浏览器是关闭还是刷新的方法。在Web开发过程中,有时候需要区分用户是关闭了浏览器窗口,还是仅仅刷新了页面,这对于执行某些特定的逻辑操作是很重要的。例如,当用户关闭浏览器窗口时...

    上传图片预览效果-兼容多种浏览器

    以上代码实现了基本的图片预览功能,但要实现跨浏览器兼容性,我们需要考虑以下几点: - 不是所有浏览器都支持HTML5的File API,因此需要检查浏览器是否支持。可以使用`FileReader`或`Blob`等对象的存在性作为判断...

    兼容主流浏览器的iframe自适应高度js脚本

    本文将讨论如何实现一个兼容主流浏览器的iframe自适应高度的JavaScript脚本。 首先,我们来理解一下iframe的基本用法。iframe的基本语法如下所示: ```html 嵌入的网址" width="宽度" height="高度"&gt; ``` 要使...

    上传文件前,本地预览图片功能,支持所有主流浏览器

    在本主题中,我们将深入探讨如何实现"上传文件前,本地预览图片功能,支持所有主流浏览器"。 首先,我们需要了解这个功能的核心技术——HTML5的File API。File API提供了在浏览器中读取、操作和处理文件的能力,这...

    js触发事件大全

    JavaScript 是一种广泛用于网页和...随着DOM(文档对象模型)和现代浏览器的事件处理API的发展,现在可以通过addEventListener和removeEventListener方法更加灵活地管理和处理事件,提供更好的跨浏览器兼容性和性能。

    JS实现图片预加载

    JS 实现图片预加载需要考虑到图片的宽和高、异步的方法、浏览器的缓存问题和兼容性问题。通过使用 Image 对象和 onload 事件,可以实现图片的预下载,并且可以结合容器的宽和高,按照一定的缩放比例使图片显示出来。

Global site tag (gtag.js) - Google Analytics