我正在构建一个项目管理应用程序作为 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/