Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检测$function后面的库?_Javascript_Jquery_Prototypejs - Fatal编程技术网

Javascript 如何检测$function后面的库?

Javascript 如何检测$function后面的库?,javascript,jquery,prototypejs,Javascript,Jquery,Prototypejs,我正在开发一些JavaScript,可以与Prototype.js或JQuery一起使用,因此我需要一些方法来确定使用的主要库是什么。我该怎么做呢?您可以像这样检查jQuery: if (window.$ === window.jQuery) 那么,您可以检查jQuery是否存在: if(window.jQuery !== "undefined") { // jQuery Yay! } 然后如果它被分配给$ if(window.jQuery === window.$) { /

我正在开发一些JavaScript,可以与Prototype.js或JQuery一起使用,因此我需要一些方法来确定使用的主要库是什么。我该怎么做呢?

您可以像这样检查jQuery:

if (window.$ === window.jQuery)

那么,您可以检查jQuery是否存在:

if(window.jQuery !== "undefined")
{
    // jQuery Yay!
}
然后如果它被分配给
$

if(window.jQuery === window.$)
{
    // jQuery Yay!
}
你能帮忙吗?然后您可以对jQuery使用
jQuery
,对prototype使用
$

和都适合检测jQuery,但是如果您想确保如果
$
函数不是来自jQuery,而是来自PrototypeJS,您可以:

​if (typeof  $ == 'function'​​) {
  if ($.fn && $.fn.jquery) { // $.fn.jquery contains the version number
    // jquery
  } else if (window.Prototype && Prototype.Version) {
   // prototype
  }
}​

在不依赖任何库的情况下编写它,它应该可以与jQuery和Prototype一起正常工作;)

说真的,这些库的要点之一不是要避免为每个浏览器编写每行代码的三种不同变体吗?编写代码试图适应多个库似乎很愚蠢

无论如何,只要看一下这两个库的文档大约5秒钟,您就会知道jq$将具有哪些属性,而pt$不会。这意味着您没有真正考虑框架之间的差异(这显然是区分它们的最佳方式,对吧?)。你确定你知道自己在干什么吗

正如一些人提到的那样:

var whosThatDollarSign = typeof window.$=='undefined' ? 'none' : (window.$==window.jQuery ? 'jQuery' : 'not jQuery')
我正在开发一些JavaScript,可以与Prototype.js或JQuery一起使用,因此我需要一些方法来确定使用的主要库是什么。我该怎么做

你的问题模棱两可,对我来说有两个明显的含义,所以我将两者都回答

如果您的意思是希望编写能够工作的代码,而不管是否使用了jQuery或Prototype.js,那么答案是编写能够工作的代码非常容易,而不管已经或将要加载的库是什么。因此,没有必要去发现哪一个被使用过

如果您的意思是要编写两个单独的脚本,一个用于jQuery,另一个用于Prototype.js,那么,根据您“检测”的脚本,您将加载一个或另一个脚本,然后将代码建立在一个非常糟糕的体系结构上。这两个库都不支持特别广泛的浏览器选择,并且在新版本出现时都需要更新,即使是它们支持的“流行”版本

如果试图使用单独的脚本来支持这两种方法,将导致持续的维护难题——增加两倍。或许这就是你的意图

--


Rob

在第一个示例中,您大概是指
typeof
。原型存在并不意味着
$
没有被覆盖。SLaks,是的,它可能已经被覆盖,这就是为什么我首先查找jQuery,但是如果是别的什么东西干的,你真的不知道……如果这件事最后没有开始变得那么说教的话,我会投赞成票的。别担心,我不会为此失眠的。