在桌面浏览器中加载jQuery脚本,但不能移动

我想在桌面浏览器中加载特定的jQuery脚本/函数,但不是移动浏览器。 目前,脚本在移动浏览器上运行速度非常慢,但在桌面浏览器上运行良好。

有问题的function是一个平滑的滚动插件,因此当用户点击链接时,页面会平滑地滚动到同一页面上的锚点。 它没有必要在移动浏览器上平滑滚动 – 它太慢,而且通常不起作用。

我需要在下面的代码中添加什么来确保它仍然在桌面浏览器中正常执行,而不是移动(特别是iPad / iPhone / iPod)?

!window.jQuery && document.write(unescape('%3Cscript src="js/lib/jquery/jquery.js"%3E%3C/script%3E'));      $(document).ready(function() { $('a[href*="#"]').live('click', function() { if ( this.hash ) { $.bbq.pushState( '#/' + this.hash.slice(1) ); return false; } }); $(window).bind('hashchange', function(event) { var tgt = location.hash.replace(/^#\/?/,''); if ( document.getElementById(tgt) ) { $.smoothScroll({scrollTarget: '#' + tgt}); } }); $(window).trigger('hashchange'); });  

jsFiddle演示

寻找touch的存在,如果它不存在那么你很可能处理桌面:

编辑 :我原来的try / catch方法显然已被弃用( https://stackoverflow.com/a/4819886/1026459

 $(document).ready(function() { var isDesktop = (function() { return !('ontouchstart' in window) // works on most browsers || !('onmsgesturechange' in window); // works on ie10 })(); //edit, if you want to use this variable outside of this closure, or later use this: window.isDesktop = isDesktop; if( isDesktop ){ /* desktop things */ } }); 

您可以尝试检索用户代理并使用该信息来决定是否要包含平滑滚动脚本。 另一种解决方案是检查浏览器宽度,然后决定是否要包含脚本。

  

使用when()需要jQuery 1.5或更高版本时,在1.0中添加了getScript() 。

EDIT编辑说,你也可以寻找触摸事件。 在这种情况下,你应该使用:

 function is_touch_device() { return !!('ontouchstart' in window) // works on most browsers || !!('onmsgesturechange' in window); // works on ie10 }; 

来自第二个SO的片段在这里回答: 使用JavaScript检测“触摸屏”设备的最佳方法是什么?