我有一个使用jQuery的函数。我需要动态地用JavaScript注入jQuery并让该函数返回该函数的返回值。我想做点什么
(function(){
var jQueryLoaded = false;
var returnValue;
if (!window.jQuery) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://code.jquery.com/jquery-1.7.1.min.js';
script.onreadystatechange= function () {
if (this.readyState == 'loaded' || this.readyState == 'complete')
onJQueryLoaded();
};
script.onload = onJQueryLoaded;
document.getElementsByTagName('head')[0].appendChild(script);
}
else {
returnValue = myJQueryFunction();
if (typeof(returnValue) == 'undefined')
returnValue = true;
return returnValue;
}
function myJQueryFunction() {
// do something
}
function onJQueryLoaded() {
if (jQueryLoaded)
return;
jQueryLoaded = true;
var $ = jQuery;
returnValue = myJQueryFunction();
if (typeof(returnValue) == 'undefined')
returnValue = true;
}
while (typeof(returnValue) == 'undefined'); // wait until onJQueryLoaded returns
return returnValue;
})();
但onJQueryLoaded
循环期间未调用while
。
有没有办法让我的基函数在返回之前等到onJQueryLoaded
被调用?
答案 0 :(得分:0)
尝试设置计时器/间隔,然后检查。只要执行一个取决于时间的回调(即加载,渲染,下载,上传的内容),那就完成了你正在寻找的东西。 或者只是将它放在jQuery本身。
答案 1 :(得分:0)
你需要将一个函数指针传递给你的myJQueryFunction()。
然后,您可以在此方法中调用该函数。
类似
function myJQueryFunction(funcPoint) {
funcPoint();
}
returnValue = myJQueryFunction(function() {return true;});
语法可能需要进一步研究,因为这只是我的头脑。
修改强>
与此相关的方案更具相关性
var func = function() {return true;};
...stuff......
function myJQueryFunction(funcPoint) {
funcPoint();
}
returnValue = myJQueryFunction(func);
更多修改
根据我在下面的评论,如果你想要的是在JQuery加载(准备好)之后触发一个函数你想要使用JQuery就绪函数
$(document).ready(function() {do you stuff here});
答案 2 :(得分:0)
当然,您可以通过...之类的方法解决这个简单得多的问题。
加载jquery脚本...
(function() {
if (!window.jQuery) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://code.jquery.com/jquery-1.7.1.min.js';
}
})();
从此处使用jquery的“ onload”功能...
$(function() { console.log("jquery is now loaded"); });