Jquery 使用公共js文件时避免js错误消息

Jquery 使用公共js文件时避免js错误消息,jquery,Jquery,我在我的网站上使用了几个jquery插件,其中大多数实际上只在某些页面上使用。例如,图像滑块插件仅显示在启动页面上 然后我有一个公共文件“custom.js”,在其中我从中调用函数,它包含在每个页面上,类似于外部css样式表。我更喜欢把它保存在一个文件中,而且大小不大 但是,由于我不想包含每个js插件文件,这些文件有时相当大,在页面上没有显示实际的插件,因此出现了我的问题。公共js文件将尝试调用未包含的插件,这些插件会生成js错误消息:例如,$(“#slider”)。coinsslider不是函

我在我的网站上使用了几个jquery插件,其中大多数实际上只在某些页面上使用。例如,图像滑块插件仅显示在启动页面上

然后我有一个公共文件“custom.js”,在其中我从中调用函数,它包含在每个页面上,类似于外部css样式表。我更喜欢把它保存在一个文件中,而且大小不大


但是,由于我不想包含每个js插件文件,这些文件有时相当大,在页面上没有显示实际的插件,因此出现了我的问题。公共js文件将尝试调用未包含的插件,这些插件会生成js错误消息:例如,
$(“#slider”)。coinsslider不是函数
。如何修复此问题?

对于浏览器缓存,这应该不是什么大问题,因为您的脚本将只加载一次,而下次将从缓存(而不是服务器)加载

但是,您想要的特性(自动加载、按需加载或延迟加载)是可能的,但有点复杂。您可以在此处找到更多信息:


希望这有帮助。干杯

对于浏览器缓存,这应该不是什么大问题,因为您的脚本只会加载一次,下次将从缓存(而不是服务器)加载

但是,您想要的特性(自动加载、按需加载或延迟加载)是可能的,但有点复杂。您可以在此处找到更多信息:


希望这有帮助。干杯有几种方法可以做到这一点。最简单的方法是检查是否存在“slider”div(假设在加载插件时,此div仅在站点上的一个位置使用):

您可以捕获正在抛出的错误:

try {
    $("#slider").coinslider();
} catch(err){}

但是我推荐第一种方法。

有几种方法可以做到这一点。最简单的方法是检查是否存在“slider”div(假设在加载插件时,此div仅在站点上的一个位置使用):

您可以捕获正在抛出的错误:

try {
    $("#slider").coinslider();
} catch(err){}

但我建议使用第一种方法。

您始终可以使用以下方法封装调用:

if($("#slider").coinslider){$("#slider").coinslider()}
甚至这也可能奏效:

if($.coinslider){$("#slider").coinslider()}
基本上,在尝试调用函数之前,先检查该函数是否存在


当然,如果用于多个元素,请尝试对初始化进行分组,因为每次检查都会带来轻微的性能损失。

您可以始终使用以下方法封装调用:

if($("#slider").coinslider){$("#slider").coinslider()}
甚至这也可能奏效:

if($.coinslider){$("#slider").coinslider()}
基本上,在尝试调用函数之前,先检查该函数是否存在


当然,如果用于几个元素,请尝试对初始化进行分组,因为每次检查都会带来轻微的性能损失。

您说某些页面不使用这些功能,但显然相关页面正在尝试使用这些功能,因此您的问题自相矛盾。@lwburk hehe冷静下来,再次阅读问题,页面没有使用它,但每个页面上包含的公共js文件都会调用它,因此会显示错误消息appear@Joesph-根据定义,如果页面加载的脚本正在使用它,则页面正在使用它。@lwburk haha这是否为线程增加了价值?@Joesph-也许,如果它启发您编写更清晰的问题。(我不是在开玩笑;我发现很难弄明白你在问什么。)你说有些页面不使用这些功能,但很明显,所讨论的页面正在尝试使用这些功能,所以你的问题自相矛盾。@lwburk hehe冷静点,再看一遍问题,页面没有使用它,但每个页面上包含的公共js文件都会调用它,因此会显示错误消息appear@Joesph-根据定义,如果页面加载的脚本正在使用它,则页面正在使用它。@lwburk haha这是否为线程增加了价值?@Joesph-也许,如果它启发您编写更清晰的问题。(我不是开玩笑,我发现很难弄明白你在问什么。)谢谢,但你认为上面的简单答案也能解决问题吗?当然,你对缓存的看法是对的,它有多长?与php会话并行?谢谢,但是你认为上面的简单答案也能解决这个问题吗?当然,你对缓存的看法是对的,它有多长?与php会话并行?