我在一个非常扭曲的环境中工作,我无法通过我正在使用的MVC框架(Cakephp)的视图逻辑来处理这个问题。这可能是因为我必须在一个页面中加载这段代码,该页面已经加载了一个jQuery脚本。
如果我只是在我的代码片段中加载jQuery,只要不存在其他jQuery脚本,它就可以工作。当有两个脚本时,它无法工作,并显示为$ is not a function。我不太确定这是如何工作的,但解释可能会有所帮助。
无论如何,我已经到了将脚本动态加载到页面中的地步。
所以这是我的代码:
<script id="loadjq" type="text/javascript"></script>
<script id="loadcloud" type="text/javascript"></script>
<script type="text/javascript">
if(typeof jQuery=="undefined"){
document.getElementById('loadjq').src= 'http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js';
}
document.getElementById('loadcloud').src= '/js/jqcloud.js';
$(document).ready(function(){
$("#tagcloud").jQCloud(word_list,{});
});
</script>这会加载脚本,但当我尝试加载jqcloud.js时,它找不到其他脚本,可能是因为它在加载其他脚本之前运行。通过一些肮脏的把戏,我可以通过它,但是当我到达$(document).ready(function()时,同样的问题也会发生
有没有一种干净利落的方法呢?我需要它在执行之前等待之前的脚本被加载,或者至少这就是问题的样子。我不确定这是否真的是我的问题。
发布于 2012-03-26 02:50:03
如何在jquery脚本元素上设置事件处理程序,以便在加载完成时调用jqcloud脚本。就像这样
if(typeof jQuery=="undefined"){
var loadjqScript = document.getElementById('loadjq').src =
'http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js';
// Code below handles browser that support script onload
// and ones that don't
var loadFunction = function()
{
if (this.readyState == 'complete' || this.readyState == 'loaded') {
loadJqCloud();
}
};
loadjqScript.onreadystatechange = loadFunction;
loadjqScript.onload = loadJqCloud;
}
function loadJqCloud() {
document.getElementById('loadcloud').src= '/js/jqcloud.js'
}https://stackoverflow.com/questions/9861207
复制相似问题