使用常见的js文件时,请避免使用js错误消息

时间:2011-07-06 19:44:48

标签: jquery

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

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

但是因为我不想在页面上包含每个js-plugin文件(有时候很大),所以实际的插件没有显示,我的问题出现了。公共js文件将尝试调用未包含的插件,这些插件会生成js错误消息:例如$("#slider").coinslider is not a function。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

使用浏览器缓存,这不应该是一个大问题,因为您的脚本只会被加载一次,并且它将在下次从缓存(而不是从服务器)加载。

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

http://www.webreference.com/programming/javascript/mk/

http://ajaxpatterns.org/On-Demand_Javascript

希望这会有所帮助。干杯

答案 1 :(得分:0)

有几种方法可以做到这一点。最简单的方法是检查'slider'div的存在(假设这个div仅用于你网站上的一个地方,当你加载插件时):

if($("#slider").length){
    $("#slider").coinslider()
}

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

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

但我会推荐第一种方法。

答案 2 :(得分:0)

您始终可以使用以下内容封装调用:

if($("#slider").coinslider){$("#slider").coinslider()}

甚至可能会有效:

if($.coinslider){$("#slider").coinslider()}

基本上,在尝试调用之前检查函数是否存在。

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