我可以检查我的页面中是否已经存在我的 javascript ext-lib(如 fancybox 插件)(不管它的版本)吗?我使用liferay portlet,它可以在一个页面中放置两个相同的portlet,我现在已经有一些脚本冲突了。(布局配置面板上的Liferay AUI脚本,一些assetPublisher中的滑块......)
问问题
404 次
2 回答
2
如果您正在测试原生 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函数,否则上述方法在绝大多数情况下都可以。
于 2012-08-31T02:02:14.653 回答
1
要检查是否加载了通用 JS 库(又名不是 jQuery 插件),请测试其功能之一:
if ($.isFunction(pluginFunction)) {
// Code to run if generic library is loaded
}
检查是否加载了 jQuery 插件:
if (jQuery().pluginName) {
// Code to run if plugin is loaded
}
希望这可以帮助!
于 2012-08-31T01:26:47.867 回答