javascript - 检查是否存在已加载的 JavaScript 库供我的应用程序使用,否则加载我自己的版本?

标签 javascript jquery

我正在构建一个项目管理应用程序作为 SugarCRM 插件。

在我的应用程序中,它使用了大量 JavaScript,特别是在弹出的 Modal Div 中显示项目任务记录的部分。

因此页面上有 1 Modal Div 的 HTML。然后,每次单击新任务记录时,我都会更新该 1 模式内的任务记录字段。它将任务模式带入 View 并更新所有任务字段并重新启动适用于这些字段的所有 JavaScript 代码。

例如,模态 div 中显示的任务记录的几乎所有数据字段都具有使用名为 X-Editable 的 jQuery 库进行就地编辑的功能。还有一个用于在 Modal、Datepicker 库中自定义滚动的滚动条插件,以及一些其他的小插件。以及我所有的自定义代码,仅此部分就有数百行!

现在我已经稍微解释了该应用程序,我可以继续讨论问题了......

SugarCRM v6.x.x 使用 jQueryUI DatePicker 插件作为自己的日期选择器。

SugarCRM v7.x.x 更改并使用 Bootstrap DatePicker 库(此一个 http://www.eyecon.ro/bootstrap-datepicker/ )

因此,在我的插件应用程序中,我已经考虑了这两个选项来满足我的日期字段需求,因为它们已经加载到页面中了!

我遇到的一个问题是 SugarCRM v6 与 v7 使用不同的库。

但这并不是一个真正的大问题,因为我能够构建 2 个版本并将代码定位到用户的正确版本。

我的问题是,知道这些库已加载到页面中,我的应用程序是否有可靠的方法来检查它们是否存在并使用它们(如果存在)?然后如果他们不这样做,加载我自己的版本?

或者我最好加载我自己的版本,即使它已经可以加载到页面中?

最佳答案

您可以使用鸭子类型来检查加载的脚本。对于 Bootstrap 版本,您可以检查 $.fn.datepicker.Constructor 是否方法存在;它是该脚本独有的。 jqueryui 版本具有相同的属性,但为小写。

编辑因为我没有注意到问题的最后部分。如果没有加载任何脚本,您可以像 HTML5 Boilerplate 一样加载自己的脚本(假设我们仍在开发日期选择器):

<罢工>

<罢工>
<script>window.MyLibrary || document.write('<script src="//routeToMyScript.js"><\/script>')</script>

<罢工>

<script>$().datepicker || document.write('<script src="//routeToMyScript.js"><\/script>')</script>

关于javascript - 检查是否存在已加载的 JavaScript 库供我的应用程序使用,否则加载我自己的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29997089/

相关文章:

javascript - "Something"破坏了这个 jqueryui 对话框。它是什么?

php - 将数组从字段发送到 javascript,然后发送到 php

javascript - 用于标记文本的正向前瞻正则表达式

javascript - 无法通过 jquery 检索元素

javascript - 当我使用 chrome 控制台时,如何从 jQuery 范围获取匿名函数中的变量?

javascript - 通过单击动态加载的表中同一行的另一个字段来更新行的字段

jQuery 更改图像 src 属性

javascript - 有没有办法让不和谐嵌入更好?

JavaScript 赋值()

javascript - 从字符串中删除空格并使用逗号连接