能否直接通过Highcharts检测触摸屏?无需导入额外脚本
Highcharts触摸屏检测方案
嘿,我刚好研究过这个问题——Highcharts本身并没有内置专门的触摸屏检测功能,官方文档里确实找不到相关说明。不过你不想额外引入Modernizr这类脚本的想法完全合理,咱们用原生JavaScript就能搞定,还能结合Highcharts的使用场景灵活调整~
给你两个实用的方案:
1. 提前用原生JS检测触摸设备
直接通过浏览器的API判断,这是最常用的无依赖方法,准确率也不错:
function isTouchDevice() { // 覆盖不同浏览器的兼容情况 return ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0); }
你可以在初始化Highcharts图表之前调用这个函数,根据结果动态调整图表配置——比如给触摸设备设置更适合的tooltip触发方式(比如'click'代替默认的'hover'),或者调整系列的点击区域大小,提升触摸体验。
2. 利用Highcharts事件间接判断
如果不想提前检测,也可以通过监听Highcharts图表的触摸事件来判断,只有当用户实际触摸图表时才标记为触摸设备,避免误判:
Highcharts.chart('container', { chart: { events: { touchstart: function() { // 标记当前设备为触摸设备 this.isTouchDevice = true; // 这里可以立即做适配调整,比如切换tooltip模式 this.update({ tooltip: { trigger: 'click' } }); } } }, // 其他图表配置项... });
这种方式更被动,适合那些只有少数用户会用触摸操作的场景。
两种方法都不需要额外导入任何脚本,完全满足你的需求~
内容的提问来源于stack exchange,提问作者eightball
相关产品推荐
相关产品推荐

