`
ssinsky
  • 浏览: 2839 次
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

动态加载js如何判断加载完成

 
阅读更多
故事的开始是这样的:项目中遇到一个跨域请求数据的问题,于是利用<script>动态加载数据(凡是拥有”src”这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>)。domain1下请求domain2下的资源:
<script type="text/javascript" src="domain2.js">var data = [{'id':111,'s':'yes'},{'id':222,'s':'no'}]</script>


动态加载js,是异步完成数据加载的,此时浏览器不会阻塞接下去的js执行。
遇到问题了:当浏览器没有加载完data,而接下来的代码访问了data,这时会报 data is undefined 错误。

这时我们需要先判断动态加载的js资源是否加载完全:
var oScript = document.createElement('script'),
    oHead = document.getElementsByTagName("HEAD").item(0);  
oScript.setAttribute('type','text/javascript');  
oScript.setAttribute('src','domain2.js');
oHead.appendChild(oScript);
oScript.onload = function(){
  alert(data);
}

解决了?NO,不好意思,IE下完全没有动静。
怎么办?

在IE或一些基于IE内核的浏览器中(如Maxthon),它是通过script节点的readystatechange方法来判断的,而其它的一些浏览器中,往往是通过load事件来决定的,代码如下:
var oScript = document.createElement('script'),
    oHead = document.getElementsByTagName("HEAD").item(0);  
oScript.setAttribute('type','text/javascript');  
oScript.setAttribute('src','domain2.js');
oHead.appendChild(oScript);
oScript.onload=oScript.onreadystatechange=function(){  
  alert('done');  
}


解决了。
分享到:
评论

相关推荐

    动态加载外部JS文件

    动态加载外部JS文件是网页开发中的一个重要技术,它允许网页在需要时按需加载JavaScript资源,从而提高页面的加载速度,优化用户体验,并有效地管理复杂的项目结构。以下将详细阐述动态加载的原理、方法以及相关实践...

    vue动态加载js.zip

    Vue动态加载JS是一种实现这一需求的技术,它允许我们在运行时根据需要加载JavaScript文件。本文将深入探讨Vue动态加载JavaScript的原理、方法以及其实现步骤。 首先,我们需要理解Vue动态加载的核心概念。在HTML中...

    javascript函数动态加载javascript文件

    加载JS文件时,可以创建一个新的XMLHttpRequest实例,打开到目标URL的连接,然后发送请求。当服务器响应时,将返回的JS代码插入到`&lt;script&gt;`标签中。例如: ```javascript var xhr = new XMLHttpRequest(); xhr....

    vue动态加载外部依赖js代码实现

    - 本案例中,我们将通过创建一个名为`myScript.vue`的组件来封装动态加载JS文件的功能,使得该功能可以方便地被其他模块引用。 2. **动态加载JS文件的实现** - 在浏览器环境中,可以通过创建`&lt;script&gt;`标签并动态...

    动态加载Css 浏览器判断

    在提供的压缩包文件中,`Browes 判断.asp`和`Browes 浏览器判断.asp`可能是用于服务器端进行浏览器检测的ASP文件,而`CheckBr(动态加载Css).js`可能是用于客户端JavaScript动态加载CSS并进行浏览器判断的脚本。...

    JS动态加载库

    1. **loadScript(url, callback)**:加载指定URL的JavaScript文件,加载完成后执行回调函数。 2. **loadModule(name, options)**:根据模块名加载相关脚本,可接受配置选项,如是否异步加载等。 3. **unloadModule...

    C#判断webbrowser页面最终加载完成

    综上所述,要判断WebBrowser控件的页面是否最终加载完成,通常需要结合多种策略,例如监听`DocumentCompleted`事件,检查`ReadyState`,监控`ProgressChanged`,以及可能的话,利用JavaScript交互。根据具体的应用...

    动态加载树(tree)和动态加载表格(table)

    在JSP中,可能使用了JavaScript库(如jQuery、AngularJS或React)和AJAX来实现表格的动态加载功能,以及与后台服务器进行交互。 总结来说,动态加载树和动态加载表格都是为了提高数据展示的效率和用户体验。通过...

    js 动态加载网页样式

    总结一下,动态加载网页样式是通过JavaScript(尤其是jQuery)来实现实时更改CSS样式,提高用户体验。通过结合`jquery.cookie.js`,我们可以将用户的个性化选择保存在Cookie中,使得刷新页面后仍然能够保持用户定制...

    jsTree 很好用的动态加载数

    动态加载是 jsTree 的核心特性之一,它允许在用户滚动或展开树节点时按需加载数据,而不是一次性加载所有数据。这种机制对于处理大量数据特别有用,因为它减少了初始页面加载时间,提高了用户体验。通过设置适当的...

    bootstrap-treeview树节点实现动态加载(懒加载)

    动态加载(也称为懒加载)是一种优化性能的技术,只在用户需要时才加载数据,而不是一次性加载所有数据,这对于处理大量数据或层级结构尤其有用,可以显著提升页面加载速度和用户体验。 本项目在官方Bootstrap ...

    Ext4 动态加载js例子

    `Ext.Loader` 是 Ext4 中的一个核心特性,用于动态加载所需的 JavaScript 类库和模块,这在开发大型应用时尤其有用,因为它可以显著减少页面初次加载时的资源需求。 动态加载的核心在于按需加载,即只有在实际需要...

    JS EasyUI DataGrid动态加载数据

    实现JS EasyUI DataGrid动态加载数据主要涉及以下几个步骤: 1. **配置DataGrid**: 在HTML中创建DataGrid,并设置其`url`属性为数据源接口,这将用于获取服务器上的数据。同时,设置`pagination`属性为`true`启用...

    vue如何实现动态加载脚本

    这篇文章主要介绍了vue如何...下面上的代码块叫 dynamicLoadScript 顾名思义,动态加载脚本,这个js只对加载tinymce有效,不过要想加载其它脚本,稍微做一下改动即可 我们可以建立一个dynamicLoadScript.js文件 上代码

    动态加载JS脚本的4种方法.doc

    本文将详细介绍四种动态加载JS脚本的方法,并探讨它们的工作原理和应用场景。 1. **直接使用`document.write`**: 这是最基础的动态加载方式,通过在JavaScript中使用`document.write`来插入包含`&lt;script&gt;`标签的...

    asp.net动态加载JavaScript树

    ASP.NET动态加载JavaScript树是一种常见的前端交互技术,用于在网页中构建可扩展的、动态的树形结构。这种技术结合了后端ASP.NET的强大处理能力和前端JavaScript的灵活展示,为用户提供了良好的交互体验,尤其适用于...

    动态加载js文件

    可以通过extjs3进行动态加载js,也可以直接通过原生js进行调用 拥有extjs4的动态加载功能, 可以同时加载多个js文件, 同时加载过的文件不会重复加载

    Extjs3动态加载js源码

    动态加载JS(Dynamic JavaScript Loading)是现代Web开发中的一个重要技术,它可以提高页面的加载速度,减少初始加载的数据量,并在需要时按需加载资源,从而优化用户体验。 在ExtJS 3中,虽然没有像ExtJS 4那样...

    js下判断 iframe 是否加载完成的完美方法.docx

    iframe 加载完成的判断方法 在 Web 开发中,判断 iframe 是否加载完成是一个常见的问题。由于 iframe 的加载过程是异步的,因此我们需要使用合适的方法来判断 iframe 是否加载完成。本文将介绍几种判断 iframe 是否...

    javascript、css动态加载工具

    javascript、css动态加载工具

Global site tag (gtag.js) - Google Analytics