我正在开发一个嵌入客户网站的小部件,它会加载一个jquery文件。但是我们需要检测是否已经在客户页面上加载了jquery以避免冲突,然后不加载我们自己的jquery。
作为旁注,小部件适用于所有版本的jquery。正在使用的代码是......
if (typeof jQuery == 'undefined') {
console.log("NOT LOADED");
scripts.push("https://d33f10u0pfpplc.cloudfront.net/perun/v1/js/widget/betaV2/jquery-1.8.2-min.js");
}
这在本地测试时有效,但是当它在某些网站上推出时我们得到了...
类型错误$ tabs(...)不是函数
似乎主机网站上的jquery一定不能完全加载是我最初的理论(可能是错的)
有没有办法改进上面使用的jquery检测?或者如果你知道它为什么不起作用我很乐意学习。感谢
答案 0 :(得分:2)
首先,$tabs
不是标准的jQuery函数。如果它是插件的一部分,您还需要确保包含插件。
还要确保jQuery未在noConflicts
模式下运行。在这种情况下,可以定义jQuery
,但不能定义$
。
答案 1 :(得分:1)
您是否检查了浏览器的加载状态? Javascript通常在浏览器解析时执行。 Jquery是一个更大的文件,有时它会先执行即将发布的代码。
要解决此问题,请确认在加载dom后执行自己的代码:
$(function() {
// your code here
});
备选方案2是检查
scripts.push()
确实如此。它需要是异步的,只是添加文件请求并不能确保文件被加载和解析。也许这是你的问题。
在小部件中使用jQuery并不是最佳选择。是否可以在原生js中编写它?
答案 2 :(得分:0)
这可能没什么帮助,但在http://www.initializr.com/
的示例中jQuery检查了
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.1.min.js"><\/script>')</script>
答案 3 :(得分:0)
请检查您的jquery版本,并且您的版本没有$tabs
jquery函数。
然后只有你遇到这种类型的错误
$ tabs(...)不是函数。
否则尝试新版本的jquery_ui文件。