在Highcharts中捕获全屏逃逸事件

在Highcharts中捕获全屏逃逸事件,highcharts,Highcharts,我需要在highcharts中从全屏获取escape键的事件,以便在从全屏转出后可以调整容器的高度。highcharts从浏览器请求全屏 您可以监听各种fullscreenchange事件,并根据这些事件执行一些操作: if (document.addEventListener) { document.addEventListener('webkitfullscreenchange', exitHandler, false); document.addEventListener('moz

我需要在highcharts中从全屏获取escape键的事件,以便在从全屏转出后可以调整容器的高度。

highcharts从浏览器请求全屏

您可以监听各种fullscreenchange事件,并根据这些事件执行一些操作:

if (document.addEventListener) {
  document.addEventListener('webkitfullscreenchange', exitHandler, false);
  document.addEventListener('mozfullscreenchange', exitHandler, false);
  document.addEventListener('fullscreenchange', exitHandler, false);
  document.addEventListener('MSFullscreenChange', exitHandler, false);
}

function exitHandler() {
  if (!document.webkitIsFullScreen && !document.mozFullScreen && !document.msFullscreenElement) {
    console.log('Exiting fullscreen. Doing chart stuff.');
    setContainerHeight(); // do your magic
  }
}

查看或查看检测全屏的一般情况。

虽然上述方法有效,但我认为我会放弃我的解决方案,因为它不适合我的环境(如前所述,同一页面上有多个图表;链接到具有不同需求的模块的部分)

当图表退出全屏模式时,我使用Highcharts来执行代码

响应:{
规则:[{
条件:{
//一个回调函数,用于完全控制何时应用响应规则。如果应用,则返回true
回调:函数(){
如果(this.chartHeight>(window.innerHeight/2)| | this.chartWidth>(window.innerWidth/2)){
log('responsive cb true:',this.renderTo.id);
_fsChartID=this.renderTo.id;
返回true;
}否则{
log('responsive cb false:',this.renderTo.id);
如果(this.renderTo.id===\u fsChartID){//仅在退出全屏时点击
_fsChartID=null;//重置_fsChartID以防止无限循环
this.redraw();//退出全屏时调用所需的任何函数
}
返回false;
}                
}
}
}]
}
基本上:

  • 定义一个变量:
    \u fsChartID
    以跟踪哪个图表处于全屏模式。对我来说,这被定义为模块中需要的全局变量
  • 每当图表进入全屏模式时,将此变量更新为正确的图表id
  • 如果图表未通过全屏测试,请检查其ID是否与进入全屏的图表相同。
    • 如果是,请重置
      \u fsChartID
      变量并执行所需操作
    • 否则,返回false作为正常值

  • 请注意,我只是调用了这个.redraw(),因为我的问题与退出全屏时图表未正确重画有关。

    您是否可以在JSFIDLE上提供任何示例?上面的代码是否不够?你能给我一个你的设置的JSFIDLE吗?我可以给它添加所需的代码。