我们经常把一大堆的JS文件在页面载入的时候就全部载入,可这样就造成了页面载入速度慢,用到的时候才载入才是最好的。
按需载入有许多种写法,比如document.writeln("<script src='js.js' tyep='text/jsvascript'></sc"+"ript>"),但是这种写法只适合首次载入或者需要添加iframe,不是很好。
将js做为一个DOM节点对象引入无疑是最好的选择,比如:
var _script = document.createElement("script");
_script .type = "text/javascript";
_script .src = "js.js";
document.getElementsByTagName("head")[0].appendChild(_script);
以前我都是这么做的,如果没马上执行里面的方法的话,有足够的时间给IE载入和解析文件的话那么是不会出错(以前都没马上执行)。
如果马上执行里面的方法的话,在FF下是不会出错,FF会先将文件载入并解析完毕后才执行,而IE却是同步的,它会在载入的同时就往下执行了,所以就会报错。
解决方法,使用AJAX读取外部JS内容:
//外部引入SCRIPT,如果SRC已存在不加入,不存在加入
//参数: src -> JS的路径, evtFun -> 载入后需要执行的事件方法名
function appendScript(src, evtFun)
{
//取得页面上所有的SCRIPT元素
script = document.getElementsByTagName("script");
//外部引入SCRIPT,如果SRC已存在不加入,不存在加入
for (var i = 0; i < script.length; i++)
{
if (script[i].getAttribute("id") == src)
{
if (evtFun)
{
evtFun();
}
return;
}
}
//外部引入JS通过AJAX取回
function getScript(result)
{
var jsCode = result.responseText;
var _script = document.createElement("script");
_script.setAttribute("language", "javascript");
_script.setAttribute("type", "text/javascript");
_script.setAttribute("text", jsCode);
_script.setAttribute("id", src);
document.getElementsByTagName("head")[0].appendChild(_script);
if (evtFun)
{
evtFun();
}
}
//AJAX读取引入的JS内容
AjaxPost(src, null, getScript});
}
//调用方法
function do()
{
function show()
{
abc(); //abc为js.js内的一个方法
}
appendScript("js.js", show); //参数:地址,事件
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pippe/archive/2008/03/14/2183672.aspx
分享到:
相关推荐
// 加载外部JS文件 if (DomJs !== null) { for (let i = 0; i < DomJs.length; i++) { let jsPath = DomJs[i].replace(/<load-js>/g, "").replace(/<\/load-js>/g, ""); loadExternalScript(jsPath); } } /...
JSLoader是一种利用JavaScript实现的文件加载工具,它主要用于动态地加载外部资源,如JavaScript文件、CSS样式表、图片等,并且在加载过程中提供进度反馈,以提升用户体验。在Web开发中,尤其在处理大量异步加载时,...
在三维图形渲染领域,Three.js 是一款非常流行的 JavaScript 库,它使得在浏览器中创建复杂的3D场景变得简单。这个“threejs测试文件格式汇总”集合了多种3D模型文件格式,包括 obj、gltf、glb、pcd、nrrd 和 3ds,...
动态载入 JavaScript/Csss 文件 传统加载外部JavaScript(*.js) 或者 Css(*.css)文件的方法是直接在<head>标签里面进行添加: 代码如下: <head> [removed][removed] <link rel=”stylesheet” type=”...
总结来说,动态创建iframe并动态添加js执行代码是Web开发中的重要技术,它能够帮助我们实现异步加载、跨域通信等功能,但同时也需要注意相关的安全问题。通过熟练掌握这些技术,开发者能够构建更复杂、更灵活的Web...
### AJAX方式载入外部页面数据的层打开效果详解 #### 一、背景介绍 在Web开发中,异步加载(Asynchronous JavaScript and XML,简称AJAX)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在...
在JavaScript编程中,动态插入脚本是一种常见的技术,用于在页面加载后或者根据某些条件按需加载外部的JavaScript文件。这种技术在处理大型应用、优化页面性能或实现异步加载时非常有用。本文将详细介绍如何让动态...
这可以通过CSS和JavaScript组合实现,例如使用CSS3动画或JavaScript动态改变元素的样式。以下是一个简单的例子,创建一个旋转的加载图标: ```css .loading-spinner { width: 20px; height: 20px; border: 3px ...
本文介绍了三种在layui tab控件中载入外部HTML页面的方法,包括iframe方式、ajax方式和script脚本方式。下面详细说明每种方法的具体实现和相关知识点。 一、iframe方式 iframe是内联框架的缩写,它可以在网页中...
XML(Extensible Markup Language)是一种...总结来说,XML外部载入图片涉及XML解析、URL处理、图片显示以及可能的样式和布局管理等多个步骤。通过理解这些知识点,开发者可以构建出能够灵活处理图像数据的应用程序。
标题中的“我自己写的可以触发事件,载入其他页面的JS”指的是一个自定义的JavaScript功能,它可以监听并响应特定的事件,并在事件触发时动态加载外部网页内容。不同于jQuery的`load()`方法,这个功能可能提供了更为...
标题中的“jessibuca+vue+js”表明这是一个基于Vue.js和JavaScript开发的项目,很可能是用于构建一个Web应用程序,特别地,根据描述提到的“用于播放监控”,我们可以推测这是一个与视频监控相关的Web应用。Vue.js是...
接下来,我们需要在`<script>`标签内或者外部的JavaScript文件(如`script.js`)中获取这个`canvas`元素,并获取它的2D渲染上下文,这将是我们用来绘制图形的“画笔”: ```javascript var loadingProgressCanvas =...
【描述】提到的“纯javascript仿做土豆网豆单列表载入图片特效”指的是,不依赖任何外部库(如jQuery),完全用原生JavaScript编写的一种技术实现。这种特效通常包括懒加载(lazy loading)功能,即当用户滚动页面时...
jQuery的getScript方法可以用来动态载入外部的JavaScript文件。一旦脚本文件被载入并执行,就可以在全局命名空间中使用这些脚本暴露的方法。 在代码示例中,我们看到定义了一个名为loadMod的函数,它被扩展到了...
- 将 JavaScript 代码保存在一个单独的 .js 文件中,然后通过 `<script src="path/to/script.js"></script>` 引入到 HTML 文件中。 ### 3. JavaScript 常用对象及其使用案例 #### 3.1 最常用情景:事件处理 - ...
2. 使用外部链接文件,通过标记将JavaScript文件链接到HTML文档中。 利用JavaScript制作常见特效网页的方法 JavaScript可以自由地被嵌入到HTML的文件之中,为我们提供了一种扩展HTML文档的手段,使网页具有特殊的...
注意,加载本地文件时,为了保证安全性,通常会禁用WebView的JavaScript执行,但若需要执行JavaScript代码,可以使用`webView.getSettings().setJavaScriptEnabled(true);`来启用。 在实际应用中,我们可能还需要对...
HTML可以包含文本、图像、链接等元素,并通过CSS进行样式定义,JavaScript则负责添加动态功能。 “Flash载入HTML”的技术实现主要依赖于Flash ActionScript,这是一种基于ECMAScript的脚本语言。ActionScript允许...