我想使用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');
}
}
只有第二次才执行。请问有没有方法可以做到在执行加载后 就 即时执行 我的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');
}
}
第一次执行 ViewUserOrder 方法只加载了外部文件,
执行不了OrderView(OrderId,'fg');
提示 找不到 OrderView 方法
使用了延时500毫秒执行
setTimeout(function(){OrderView(OrderId,'fg');},500);
下面的这个函数,就是动态插入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);
}
你的代码
}在JS里这样包一下。但如果页面内和各JS里情况比较复杂的话,就先引用JQ的JS,然后在JS里:
$(document).ready(function(){
你的代码
}
);
loadScript('test','http://test.com/test.js',test) 或者
loadScript('test','http://test.com/test.js',function(){alert('test')})