【发布时间】:2009-12-27 17:25:04
【问题描述】:
我正在尝试封装我使用 jQuery、jQuery UI、jQuery Form 和 xmlDom 构建的 javascript。
我希望能够仅向我的客户发送一个引用其他 javascript 的 javascript,包括仅用于选项设置的一小段 js。
在下面找到一个例子:
<script language="javascript">
var myOptions = {
shop: 1,
style: "gold"
}
load();
</script>
<script src="http://myServer/myScript.js" type="text/javascript"></script>
动态加载 jQuery 和插件对我来说几乎是不可能的。我阅读了很多示例,当我动态加载 jQuery 时,它可以正常工作,但其余的扩展从未正常工作。以下序列是加载至少几个插件的唯一序列:
设置动态加载jQuery的加载函数:
load = function() {
load.getScript(url_base + "/js/jquery-1.3.2.js");
load.tryReady(0);
}
load.getScript = function(filename) {
var script = document.createElement('script')
script.setAttribute("type","text/javascript")
script.setAttribute("src", filename)
if (typeof script!="undefined")
document.getElementsByTagName("head")[0].appendChild(script)
}
load.tryReady = function(time_elapsed) {
// Continually polls to see if jQuery is loaded.
if (typeof $ == "undefined") { // if jQuery isn't loaded yet...
if (time_elapsed <= 5000) { // and we havn't given up trying...
setTimeout("load.tryReady(" + (time_elapsed + 200) + ")", 200); // set a timer to check again in 200 ms.
} else {
alert("Timed out while loading jQuery.")
}
} else {
...
}
之后加载每个插件,jQueryForm、jQuery UI、xmlDom
当我检查 jQuery 表单时,它是可用的:
if (jQuery().ajaxForm)
当我检查 xmlDom 时,它可以工作。
当我检查 jQuery UI 时,它永远不可用。
if(jQuery().ui)
如果我设置了等待 UI 的超时时间也没关系,它永远不会加载。似乎是 jQuery 在加载之前执行了我的 UI 功能。
谁能给我一个链接来帮助解决这个问题?
【问题讨论】:
-
查看html的时候是不是头部的ui脚本标签?当你测试
if (jQuery.fn.ajaxForm)时会发生什么? -
你提到的那行有效,我的意思是,表达是正确的。我需要在我的脚本之前加载所有扩展。我可以为 IE 找到一个解决方案,但它在 Chrome 和 Firefox 中不起作用,它会在一段时间内测试这些条件,直到它变为 true 或超时返回。
标签: javascript jquery jquery-ui jquery-plugins