我正在執行將在瀏覽器中運行的SWF應用程序。 當Flex應用程序處於焦點時,我想捕獲CTRL+F
按鍵事件。在瀏覽器中捕獲熱鍵
在Firefox中工作正常,但Opera和Safari瀏覽器在Flex應用程序和查找對話框彈出窗口之前捕獲事件。
有沒有什麼辦法可以讓flex應用程序捕獲CTRL+F
事件之前的瀏覽器?
我正在執行將在瀏覽器中運行的SWF應用程序。 當Flex應用程序處於焦點時,我想捕獲CTRL+F
按鍵事件。在瀏覽器中捕獲熱鍵
在Firefox中工作正常,但Opera和Safari瀏覽器在Flex應用程序和查找對話框彈出窗口之前捕獲事件。
有沒有什麼辦法可以讓flex應用程序捕獲CTRL+F
事件之前的瀏覽器?
也許將javascript添加到您的html中,該html包含將阻止它的swf。這聽起來像那些瀏覽器以不同的順序處理事件,所以我懷疑在flash播放器中會做什麼可以做到。
其中E是鍵盤事件:
if(e.commandKey || e.ctrlKey){
switch(e.keyCode){
case Keyboard.N:
// do stuff
break;
}
}
我問這個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應用程序中的焦點恢復到之前的位置,這應該很容易。
乾杯, 蘭斯