2013-02-15 162 views
3

構建了一個功能,取消選擇除ctrl單擊的項目外的所有項目。它在IE和Chrome中運行良好,但不在Firefox中運行。
嘗試jsfiddle在http://jsfiddle.net/PJVK3/event.ctrlKey適用於IE和Chrome,但不適用Firefox legendItemClick

試圖用簡單的javascript代碼捕獲相同的事件併發生同樣的問題。 此作品在Chrome(24.0.1312.57)和IE(9),而在Firefox(18.0.2):

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function myFunction() 
{ 
if (event.ctrlKey){document.getElementById("demo").innerHTML="ctl key pressed";} 
if (!event.ctrlKey){document.getElementById("demo").innerHTML="ctl key NOT pressed";} 
} 
</script> 
</head> 
<body> 
<p>Click the button to trigger a function.</p> 
<button onclick="myFunction()">Click me</button> 
<p id="demo"></p> 
</body> 
</html> 

Whatup?任何人?

回答

3

如果你看看源代碼,你會發現它存儲在event.browserEvent上的事件。
這是一個固定的錯誤:https://github.com/highslide-software/highcharts.com/pull/992

那麼,你爲什麼要使用event.browserEvent,而不是window.event
很簡單,因爲window.event在Firefox中不存在。

legendItemClick: function(e) { 
    var visibility = this.visible ? 'visible' : 'hidden'; 

    if (!e.browserEvent.ctrlKey) { 
     if (!confirm('The series is currently '+ 
      visibility +'. Do you want to change that?')) { 
      return false; 
     } 
    } 
} 

demo

源代碼 - 相關代碼

.on('click', function (event) { 
    var strLegendItemClick = 'legendItemClick', 
     fnLegendItemClick = function() { 
      item.setVisible(); 
     }; 

    // Pass over the click/touch event. #4. 
    event = { 
     browserEvent: event     // < -- here is the magic 
    }; 

    // click the name or symbol 
    if (item.firePointEvent) { // point 
     item.firePointEvent(strLegendItemClick, event, fnLegendItemClick); 
    } else { 
     fireEvent(item, strLegendItemClick, event, fnLegendItemClick); 
    } 
}); 
+1

NICE找到了,你贏了。這只是奇怪的,它只在Firefox中不起作用 – Ian 2013-02-15 06:34:17

+1

你釘了它。不過,我確實相信這是一個錯誤。由於我託管自己的highcharts.js,所以它不適用於我的本地實現,因爲我需要比標準托盤更多的顏色。我不得不下載最新版本才能正常工作。感謝一束。 – Zoom 2013-02-15 08:12:53

0

你可以使用這樣的事情:

   var evtobj = window.event ? event : e; 
       if (evtobj.shiftKey) { 
        //do something 
       } else { 
        //other things 
       } 

這將在Chrome瀏覽器,IE和Firefox瀏覽器。

相關問題