高手们,动态加载脚本后找不到加载的对象,如何解决

高手们,动态加载脚本后找不到加载的对象,怎么解决?JScript code//jquery.common.js里面的方法include: fun

高手们,动态加载脚本后找不到加载的对象,怎么解决?

JScript code
//jquery.common.js里面的方法include: function (file) {        var files = typeof file == "string" ? [file] : file;        for (var i = 0; i < files.length; i++) {            var name = files[i].replace(/^\s|\s$/g, "");            var att = name.split('.');            var ext = att[att.length - 1].toLowerCase();            var isCSS = ext == "css";            var tag = isCSS ? "link" : "script";            var attr = isCSS ? " type='text/css' rel='stylesheet' " : " language='javascript' type='text/javascript' ";            var link = (isCSS ? "href" : "src") + "='" + name + "'";            if ($(tag + "[" + link + "]").length == 0) {                if (isCSS) {                    var head = document.getElementsByTagName("head").item(0);                    var css = document.createElement("link");                    css.href = name;                    css.rel = "stylesheet";                    css.type = "text/css";                    head.appendChild(css);                }                else {                    $.ajax({ type: 'GET', url: name, async: false, dataType: 'script' });                }            }        }    }

HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">    <head>        <title>测试页面</title>                <script src="jquery-1.8.0-vsdoc.js" language="javascript" type="text/javascript" charset="utf-8"></script>             <script src="jquery.common.js" language="javascript" type="text/javascript" ></script>              </head>    <body>   <script language="javascript" type="text/javascript">         $(function(){          $.include(["/Dialog2/skins/default.css", "/Dialog2/jquery.artDialog.js"]);});         function test() {             if (typeof ($.dialog) == undefined|| ($.dialog==null)) {                 alert(22);                 setTimeout(function () { $.dialog.alert("正在加载..."); }, 2000);                              }             else {                 $.dialog.alert("正在加载...");             }         }          </script>  <input type="button" value="获取dialog对象" onclick="test();"/></body>

$.dialog 对象写在jquery.artDialog.js文件当中,其中这个脚本文件是通过jquery.common.js 的$.include方法引用进去
为什么始终都无法获取$.dialog这个对象呢,也就是说jquery.artDialog的里面所有方法对象都无法在html页面中调用呢,
当然如果直接引用jquery.artDialog.js到html页面是正常的。

但我就要通过jquery.common.js 的$.include方法引用,请问大家怎么解决。

[解决办法]
$.include(["/Dialog2/skins/default.css", "/Dialog2/jquery.artDialog.js"]);
从$(function(){});中移出试试。
[解决办法]
把URL写全,比如

$.include(["/Dialog2/skins/default.css", "http://theforever.csdn.net/Dialog2/jquery.artDialog.js"]);

[解决办法]
include 是异步导入js.

js 没加载完毕,你下面调用,当然有问题。

解决办法:
1、回调函数
2、递归 setTimeout 判断是否加载完毕


// 动态导入js
function include(src,encoding,fun) 

var s = $C('script');


s.type='text/javascript';
s.charset=encoding; //'gb2312';
s.src = src;
var tags =$$('head');
if(typeof(fun)=='function'){
if( document.all ){
s.onreadystatechange = function(){
if(/(complete|loaded)/.test(this.readyState)){
fun(); s.onreadystatechange = null; s.parentNode.removeChild(s); 
}};
}else{
s.onload = function(){ fun(); s.onload = null; s.parentNode.removeChild(s); };
}

tags[0].appendChild(s); 
};


include("js 路径","js 文件编码",function(){/**回调函数*/});


[解决办法]
include 是异步导入js.

js 没加载完毕,你下面调用,当然有问题。

解决办法:
1、回调函数
2、递归 setTimeout 判断是否加载完毕
楼上说的对 你试试看