代码之家  ›  专栏  ›  技术社区  ›  clops

如何检测$function后面的库?

  •  16
  • clops  · 技术社区  · 16 年前

    我正在开发一些应该与prototype.js或jquery一起工作的javascript,因此我需要一些方法来确定使用的主要库是什么。我该怎么做?

    6 回复  |  直到 14 年前
        1
  •  19
  •   SLaks    16 年前

    您可以这样检查jquery:

    if (window.$ === window.jQuery)
    
        2
  •  5
  •   Tyler Carter    16 年前

    好吧,您可以检查jquery的存在:

    if(window.jQuery !== "undefined")
    {
        // jQuery Yay!
    }
    

    如果它被分配给 $

    if(window.jQuery === window.$)
    {
        // jQuery Yay!
    }
    
        3
  •  3
  •   Richard JP Le Guen    16 年前

    可以 jQuery noconflict 帮助?那你就可以用 jQuery 对于jquery和 $ 对于原型。

        4
  •  3
  •   Community Mohan Dere    9 年前

    @SLaks 和 @Chacha102 对于检测jquery是正确的,但是如果您想确保 $ 函数不是来自jquery,而是来自prototypejs,您可以:

    ​if (typeof  $ == 'function'​​) {
      if ($.fn && $.fn.jquery) { // $.fn.jquery contains the version number
        // jquery
      } else if (window.Prototype && Prototype.Version) {
       // prototype
      }
    }​
    
        5
  •  1
  •   RobG    16 年前

    我正在开发一些应该与prototype.js或jquery一起工作的javascript,因此我需要一些方法来确定使用的主要库是什么。我该怎么做?

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

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

    如果您的意思是要编写两个单独的脚本,一个用于jquery,一个用于prototype.js,那么,根据您“检测”的脚本,您将加载一个或另一个脚本,然后您将代码基于一个非常糟糕的架构。这两个库都不支持特别广泛的浏览器选择,而且都需要在新版本发布时进行更新,即使是它们支持的“流行”版本。

    尝试使用单独的脚本同时支持这两个脚本将导致持续的维护问题—两次。或许这就是你的意图。

    ——

    罗布

        6
  •  0
  •   Dagg Nabbit    16 年前

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

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

    无论如何,查看任意一个库的文档大约5秒钟,应该会提示您jq$将拥有哪些属性,而pt$不会。这表明您并没有真正费心研究框架之间的差异(这显然是区分框架的最好方法,对吧?)。你确定你知道自己在做什么吗?

    正如一些人提到的:

    var whosThatDollarSign = typeof window.$=='undefined' ? 'none' : (window.$==window.jQuery ? 'jQuery' : 'not jQuery')