zoukankan      html  css  js  c++  java
  • js动态引入的四种方式

    index.html

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
       <meta content="text/html;charset=utf-8" http-equiv="content-type">
       <title> </title>
        <script src='' id="s1"></script>
       <script src="dynamic.js"></script>
     </head>
    
     <body>
      
     </body>
    </html>

    test.js

    alert("hello! I am test.js");  
    var str="1";  

    dynamic.js

    //第一种方式:直接document.write 但这样会把当前的页面全覆写掉  
    //document.write("<script src='test.js'></script>");  
      
      
    //第二种方式:动态改变已有script的src属性  
    //s1.src="test.js"  
      
      
    //第三种方式:动态创建script元素  
    /*    var oHead = document.getElementsByTagName('HEAD').item(0); 
        var oScript= document.createElement("script"); 
        oScript.type = "text/javascript"; 
        oScript.src="test.js"; 
        oHead.appendChild(oScript); 
    */  
    //其实原理就是利用dom动态的引入一个js到文件中来~就能和原有的js通信了~  
      
    //alert(str);  
      
      
    /*以上三种方式都采用异步加载机制,也就是加载过程中,页面会往下走, 
    如果这样的话会有问题的,如上面的str就访问不到,因为当程序执行alert(str)时,test.js还在加载Ing.... 
     
    <strong><span style="color:#ff0000;">那么第四种就是基于ajax请求的,且是推荐</span></strong> 
    */  
      
    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)  
            {  
               includeJS( sId, url, oXmlHttp.responseText );  
            }  
        }  
        oXmlHttp.open('GET', url, false);//同步操作  
        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.type = "text/javascript";  
            oScript.id = sId;  
            oScript.text = source;  
            oHead.appendChild( oScript );  
        }  
    }  
      
    ajaxPage( "scrA", "test.js" );  
    alert( "主页面动态加载JS脚本。");  
    alert( "主页面动态加载a.js并取其中的变量:" + str );  
  • 相关阅读:
    指针
    《算法图解》3
    《算法图解》2
    Python缩进
    linux_01_seq_shuf_sort
    centos yum 切换阿里源
    Python csv 跳过第一行 去除表头 读取文件内容
    C语言结构体内存分析
    shell csv导入mysql ERROR 1292 (22007) at line 1: Incorrect datetime value: '' for column 解决方案
    代码实现:数据结构之数组当中唯一的k个数 k=1,2
  • 原文地址:https://www.cnblogs.com/msdn1433/p/5794884.html
Copyright © 2011-2022 走看看