- 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');