检查 javascript lib 是否已经存在

Check whether javascript lib already exist

本文关键字:存在 是否 javascript lib 检查      更新时间:2023-09-26

我可以检查我的页面中是否已经存在我的JavaScript ext-lib(例如fancybox插件(吗?我使用liferayportlet,它可以在一个页面中放置两个相同的portlet,我现在已经有一些脚本冲突。(布局配置面板上的Liferay AUI脚本,某些资产发布器中的滑块...

如果您正在测试本机 JavaScript 函数(即内置或使用 javascript 创建(,那么:

if (typeof foo == 'function')

将始终工作,无论您使用哪个库。 例如,要测试 jQuery 是否可用:

if (typeof jQuery == 'function')

我不会信任主机对象的jQuery isFunction方法,如果你不测试主机对象,typeof是完全可靠的。

编辑

哦,我应该补充一点,如果你正在测试主机对象的方法,有很多方面需要考虑。在绝大多数情况下,以下内容就足够了:

if (hostObject && hostObject.method) {
  // call hostObject.method
}

值得注意的是,主机对象不需要符合 ECMA-262(尽管大多数现代实现在很大程度上都符合,至少对于 DOM 对象而言(。有许多正在使用的实现具有主机对象,当使用typeof进行测试时,这些对象将返回"未知"或类似内容,一些较旧的对象甚至会抛出错误。

如果使用 object.prototype.toString.call(hostObject)(jQuery 的 isFunction 函数使用(进行测试,某些主机对象会抛出错误,因此除非您要实现健壮的 isHostMethod 函数,否则上述操作在绝大多数情况下都可以。

要检查是否加载了通用 JS lib(又名不是 jQuery 插件(,请测试其函数之一:

if ($.isFunction(pluginFunction)) {
    // Code to run if generic library is loaded
}

要检查是否加载了 jQuery 插件:

if (jQuery().pluginName) {
    // Code to run if plugin is loaded
}

希望这有帮助!