Tra*_*ton 9 javascript jquery detect
我正在开发一个可以嵌入像youtube视频这样的页面的do-dad.我想要的特殊效果需要jQuery才能工作.
我想加载jQuery,条件是页面上的东西还没有添加jQuery.
我虽然在测试
if (typeof($)=='function'){...
Run Code Online (Sandbox Code Playgroud)
但是只有在页面到达我的脚本时加载并运行jQuery时才有效.由于最近的最佳实践是将脚本嵌入到页脚中,因此我的嵌入代码可能永远不会在大多数情况下看到jQuery.
我想过做测试onready而不是onload,但是onready函数是在jQuery中.(我想我可以使用一个独立的脚本?有一个好的吗?)
最后,我虽然在超时延迟后测试jQuery,但这看起来不够优雅,最糟糕的是不可靠.
有什么想法吗?
鉴于您的限制,我只看到两个选项:
使用window.load事件:
(function() {
if (window.addEventListener) {
// Standard
window.addEventListener('load', jQueryCheck, false);
}
else if (window.attachEvent) {
// Microsoft
window.attachEvent('onload', jQueryCheck);
}
function jQueryCheck() {
if (typeof jQuery === "undefined") {
// No one's loaded it; either load it or do without
}
}
})();
Run Code Online (Sandbox Code Playgroud)
window.load情况非常的负载周期的后期,但是,毕竟图像和这样的加载.
使用超时.好消息是超时可能很短.
(function() {
var counter = 0;
doDetect();
function doDetect() {
if (typeof jQuery !== "undefined") {
// ...jQuery has been loaded
}
else if (++counter < 5) { // 5 or whatever
setTimeout(doDetect, 10);
}
else {
// Time out (and either load it or don't)
}
}
})();
Run Code Online (Sandbox Code Playgroud)
您必须调整以确定计数器和间隔的最佳值.但是如果即使在第一个或第二个循环中也没有加载jQuery,我的猜测(未经测试)是它不会被加载...除非别人正在做你正在做的事情.:-)
| 归档时间: |
|
| 查看次数: |
27259 次 |
| 最近记录: |