2009-12-29 66 views
7

我正在執行將在瀏覽器中運行的SWF應用程序。 當Flex應用程序處於焦點時,我想捕獲CTRL+F按鍵事件。在瀏覽器中捕獲熱鍵

在Firefox中工作正常,但Opera和Safari瀏覽器在Flex應用程序和查找對話框彈出窗口之前捕獲事件。

有沒有什麼辦法可以讓flex應用程序捕獲CTRL+F事件之前的瀏覽器?

回答

0

也許將javascript添加到您的html中,該html包含將阻止它的swf。這聽起來像那些瀏覽器以不同的順序處理事件,所以我懷疑在flash播放器中會做什麼可以做到。

0

其中E是鍵盤事件:

if(e.commandKey || e.ctrlKey){ 

    switch(e.keyCode){ 
     case Keyboard.N: 
      // do stuff 
      break; 
    } 
} 
2

我問這個same question recently,並已玩了。

我想出了這個要點在GitHub上:

Browser KeyboardEvent Hijacking with Javascript and Flex

CTRL-F的作品!

檢查那裏的JavaScript。基本上,使用Safari,你只能聽到元鍵(ctrl/alt/shift等);如果Flash由於某種原因正在運行,它將不允許javascript聽到A-Z事件。所以我只是在javascript中聽取元鍵,然後在javascript中調用window.focus()。這將重點放在瀏覽器上,這樣你就可以劫持瀏覽器的鍵盤事件!然後,我會聽A-Z事件或其他事情,並將其傳遞給Flex。

下一步是將Flex應用程序中的焦點恢復到之前的位置,這應該很容易。

乾杯, 蘭斯