我想使用JS 载入外部文件 OrderMgt.js,PrintArea.js,OrderClass.css 等文件后,即时执行OrderMgt.js  的 OrderView(OrderId,'fg')方法。但测试结果是,第一次只执行了 加载文件,而不执行OrderView 方法。
只有第二次才执行。请问有没有方法可以做到在执行加载后 就 即时执行 我的OrderView(OrderId,'fg') 方法呢??
以下是我的源代码
var QC_Load = true; //默认没有载入
function ViewUserOrder(OrderId)
{
//载入订单管理文件
var OrderPath ="../../Content/JS/OrderMgt.js";
var JQ_Part ="../../Content/JS/PrintArea.js";
var CssPath = "../../Content/Css/OrderClass.css"

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

var oScript= document.createElement("script");
oScript.type = "text/javascript";
oScript.src= OrderPath;
oHead.appendChild( oScript); 

var JQScript= document.createElement("script");
JQScript.type = "text/javascript";
JQScript.src= JQ_Part;
oHead.appendChild( JQScript); 

var fileref=document.createElement("link");
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href",CssPath);
oHead.appendChild( fileref); 

QC_Load = false;
OrderView(OrderId,'fg');
}
else
{
OrderView(OrderId,'fg');
}

}

解决方案 »

  1.   

    页面上放一个隐藏的button,在onclick中调用这个方法,在载入外部文件完成后模拟点击这个button
      

  2.   

    现在出来的效果是
    第一次执行 ViewUserOrder 方法只加载了外部文件,
    执行不了OrderView(OrderId,'fg');
    提示 找不到 OrderView 方法
      

  3.   

    自己处理好了
    使用了延时500毫秒执行
    setTimeout(function(){OrderView(OrderId,'fg');},500);
      

  4.   

    延时其实是个不靠谱的措施。万一在500毫秒内js仍然没有加载完呢?动态插入js实际上需要判断它的状态。
    下面的这个函数,就是动态插入js之后,立即执行回调函数callback(即该js内包含的函数).
    function loadScript(id, url, callback){ 
        var script = document.createElement('script'); 
        script.type = 'text/javascript'; 
        script.id = id;
        if (callback) 
        script.onload = script.onreadystatechange = function() { 
            if (script.readyState && script.readyState != 'loaded' && script.readyState != 'complete') 
                return; 
            script.onreadystatechange = script.onload = null; 
            callback(); 
        }; 
        script.src = url; 
        document.getElementsByTagName('head')[0].appendChild (script); 

      

  5.   

    loadScript(id, url, callback) 这个callback 是什么类型的参数?
      

  6.   

    window.onload=function(){
    你的代码
    }在JS里这样包一下。但如果页面内和各JS里情况比较复杂的话,就先引用JQ的JS,然后在JS里:
    $(document).ready(function(){
    你的代码
    }
    );
      

  7.   

    这个既可以是个函数名,又可以是一个匿名函数。比如下面两种用法都可以。
    loadScript('test','http://test.com/test.js',test) 或者
    loadScript('test','http://test.com/test.js',function(){alert('test')})