`
xuyelongjava
  • 浏览: 38235 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

ajax动态加载JS脚本的四种方法

阅读更多
Prototype之Ajax.Updater不能正确引入脚本的问题
实用且不花哨的js代码大全
要实现动态加载JS脚本有4种方法:

1、直接document.write
<script language="javascript">

document.write("<script src='test.js'><\/script>");

</script>



2、动态改变已有script的src属性
<script src='' id="s1"></script>

<script language="javascript">

s1.src="test.js"

</script>



3、动态创建script元素
<script>

var oHead = document.getElementsByTagName('HEAD').item(0);

var oScript= document.createElement("script");

oScript.type = "text/javascript";

oScript.src="test.js";

oHead.appendChild( oScript);

</script>



  这三种方法都是异步执行的,也就是说,在加载这些脚本的同时,主页面的脚本继续运行,如果用以上的方法,那下面的代码将得不到预期的效果。

要动态加载的JS脚本:a.js,以下是该文件的内容。
var str = "中国";

alert( "这是a.js中的变量:" + str );





主页面代码:


<script language="JavaScript">

function LoadJS( id, fileUrl )

{

var scriptTag = document.getElementById( id );

var oHead = document.getElementsByTagName('HEAD').item(0);

var oScript= document.createElement("script");



if ( scriptTag ) oHead.removeChild( scriptTag );

oScript.id = id;

oScript.type = "text/javascript";

oScript.src=fileUrl ;

oHead.appendChild( oScript);

}



LoadJS( "a.js" );



alert( "主页面动态加载a.js并取其中的变量:" + str );

</script>

上述代码执行后 a.js 的 alert 执行并弹出消息,



但是 主页面产生了错误,没有弹出对话框。原因是 'str' 未定义,为什么呢?因为主页面在取 str 的时候 a.js 并没有完全加载成功。遇到需要同步执行脚本的时候,可以用下面的第四种方法。

4、原理:用XMLHTTP取得要脚本的内容,再创建 Script 对象。

注意:a.js必须用UTF8编码保存,要不会出错。因为服务器与XML使用UTF8编码传送数据。

主页面代码:
<script language="JavaScript">

function GetHttpRequest()

{

if ( window.XMLHttpRequest ) // Gecko

return new XMLHttpRequest() ;

else if ( window.ActiveXObject ) // IE

return new ActiveXObject("MsXml2.XmlHttp") ;

}



function AjaxPage(sId, url){

var oXmlHttp = GetHttpRequest() ;



oXmlHttp.OnReadyStateChange = function()

{

if ( oXmlHttp.readyState == 4 )

{

if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )

{

IncludeJS( sId, url, oXmlHttp.responseText );

}

else

{

alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;

}

}

}



oXmlHttp.open('GET', url, true);

oXmlHttp.send(null);

}



function IncludeJS(sId, fileUrl, source)

{

if ( ( source != null ) && ( !document.getElementById( sId ) ) ){

var oHead = document.getElementsByTagName('HEAD').item(0);

var oScript = document.createElement( "script" );



oScript.language = "javascript";

oScript.type = "text/javascript";

oScript.id = sId;

oScript.defer = true;

oScript.text = source;



oHead.appendChild( oScript );

}

}



AjaxPage( "scrA", "b.js" );



alert( "主页面动态加载JS脚本。");

alert( "主页面动态加载a.js并取其中的变量:" + str );

</script>

现在完成了一个JS脚本的动态加载。 
分享到:
评论

相关推荐

    Ajax的js脚本,简单高效。

    Ajax(异步JavaScript和XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。这种技术的核心在于JavaScript,它利用XMLHttpRequest对象...

    ajax,servlet动态加载dtree

    4. **文件结构**:项目中的`ajax,servlet动态加载dtree`可能是一个目录,包含与Ajax和Servlet交互相关的代码或配置文件,比如JavaScript脚本、CSS样式表等。而`dtree`文件可能是dtree组件的库文件,可能包含了dtree...

    基于jquery.masonry插件开发的瀑布流ajax动态加载数据功能

    在本项目中,我们利用jQuery Masonry插件来实现瀑布流效果,并结合Ajax技术实现动态加载数据,进一步提升用户体验。 jQuery Masonry插件是由David DeSandro开发的一个JavaScript库,它的主要功能是将网页中的元素以...

    js动态引入外部js脚本并获取里面的变量值.pdf

    "js动态引入外部js脚本并获取里面的变量值"这个主题就是关于如何在JavaScript中实现这种功能的讨论。 首先,`jQuery`库提供了一个非常方便的方法来实现动态加载外部脚本:`$.getScript()`。这是一个异步方法,它...

    Jquery插件小集合(ajax 投票 AJAX动态加载广告)

    本集合包含两个特定的jQuery插件,用于实现AJAX投票功能和AJAX动态加载广告,极大地提高了用户体验和页面交互性。 ### 1. AJAX投票功能 在`Rating.asp`、`rating.css`和`Rating.html`文件中,我们可以找到一个基于...

    图片ajax动态分批加载

    当满足加载条件(如滚动到底部)时,发送AJAX请求,接收到响应后,利用`append()`或`insertAdjacentHTML()`等方法将新图片添加到页面。 在实际应用中,还需要考虑一些优化措施,例如设置适当的加载指示器,告知用户...

    dtree+ajax异步加载树

    而Ajax(Asynchronous JavaScript and XML)则是一种在不重新加载整个网页的情况下更新部分网页的技术。当dtree与Ajax结合时,可以实现异步加载树节点,提升用户体验,减少页面加载时间。 ### dtree基础知识 1. **...

    php ajax动态购物车

    3. `ajax.js` - 包含AJAX请求的JavaScript文件,与`index.php`和`cart.php`通信。 4. `style.css` - 网页样式表,定义购物车的外观和特效。 5. `database.php` - 数据库连接配置文件,可能包含数据库连接信息和SQL...

    AJAX动态加载无限级树和弹出div层

    本项目"AJAX动态加载无限级树和弹出div层"正是利用这一特性,实现了动态加载无限层级的树形结构数据以及通过JavaScript弹出div层来展示相关信息。 首先,我们来详细探讨AJAX。AJAX的核心是XMLHttpRequest对象,它...

    动态加载JavaScript文件的两种方法_.docx

    ### 方法一:使用Ajax加载 通过Ajax请求加载JavaScript文件,实质上是向服务器发送异步请求获取脚本内容,然后使用`eval()`函数执行返回的代码。这种方法的代码示例如下: ```javascript var xhr = new ...

    用ajax动态加载需要的js文件

    在Web开发中,动态加载JS文件是一项重要的技术,它允许开发者根据需要而不是一次性加载全部脚本,这有助于加快页面加载速度,减少初始载入的资源消耗。本文档详细介绍了使用AJAX技术动态加载JavaScript文件的相关...

    AJAX滑动医院专家特效脚本.zip

    AJAX,全称Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器交换数据并局部更新页面,使用户感觉页面响应速度更快,...

    JavaScript脚本精华-JS脚本精华

    JavaScript,简称JS,是一种广泛应用于Web开发的轻量级编程语言,主要负责客户端的动态交互。作为网页和浏览器之间的桥梁,它使得网页可以实现丰富的用户体验和动态功能。本压缩包"JavaScript脚本精华"汇集了大量JS...

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

    内容部分介绍了四种动态加载JS的方法: 1. 直接使用document.write方法 这是一种非常直接的动态加载脚本的方法。通过document.write可以直接在文档流中写入标签来加载外部JS文件。具体做法是将标签的src属性设置为...

    Ajax动态表格,可适时添加行、删除行、复制行

    在IT行业中,Ajax(Asynchronous JavaScript and XML)技术是一种用于创建快速、动态网页的重要方法。它允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容,从而提供了更好的用户体验。本...

    Firebug控制台动态加载jquery脚本并执行jquery代码

    6. **扩展应用**:除了在Firebug控制台中使用,这种动态加载和执行jQuery的方法还可以应用于实际的JavaScript代码中,特别是在你需要在用户交互后或者页面加载的某个特定阶段引入jQuery时。 了解了这些概念后,你...

    使用jQuery动态加载js脚本文件的方法

    在现代Web开发中,动态加载JavaScript文件是一项...总之,动态加载JavaScript文件是一种非常实用的技术,能够帮助开发人员提升页面性能和用户体验。在实际应用中,应当根据项目需求和环境来选择合适的加载方式和策略。

    PHP Ajax 动态加载的选项卡源代码.rar

    在IT领域,动态加载是一种优化用户体验的技术,它允许网页或应用程序仅在用户需要时加载内容,而不是一次性加载所有数据。这种技术在PHP和Ajax的结合中得到了广泛应用,尤其是在选项卡式界面设计中。"PHP Ajax 动态...

    Ajax省市县联动脚本

    1. **Ajax(异步JavaScript和XML)**:Ajax并非一种单一的技术,而是一组用于创建动态网页的技术集合。它允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。这大大提高了网页的响应速度和...

Global site tag (gtag.js) - Google Analytics