2009-12-29 18 views
7

Tôi đang làm ứng dụng SWF sẽ chạy trong trình duyệt. Và tôi muốn chụp CTRL+F sự kiện nhấn phím khi ứng dụng Flex được lấy nét.Ghi phím nóng trong các trình duyệt

Trong Firefox nó hoạt động tốt nhưng trong trình duyệt Opera và Safari nắm bắt sự kiện trước khi ứng dụng Flex và Tìm cửa sổ bật lên.

Có cách nào để ứng dụng flex chụp CTRL+F trình duyệt trước sự kiện không?

Trả lời

0

Có thể thêm javascript vào html của bạn chứa swf có thể chặn nó. Có vẻ như những trình duyệt đó xử lý các sự kiện theo thứ tự khác nhau nên tôi nghi ngờ sẽ có bất cứ điều gì bạn có thể làm từ bên trong trình phát flash có thể thực hiện được.

0

đâu e là một sự kiện bàn phím:

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

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

Tôi hỏi same question recently này và đã được chơi đùa với nó.

tôi đã đưa ra ý chính này trên github:

Browser KeyboardEvent Hijacking with Javascript and Flex

Ctrl-F hoạt động!

Kiểm tra javascript trong đó. Về cơ bản, với Safari, bạn chỉ có thể nghe các phím meta (ctrl/alt/shift, v.v.); nó sẽ không cho phép javascript nghe các sự kiện A-Z nếu Flash đang chạy vì một lý do nào đó. Vì vậy, tôi chỉ cần nghe các khóa meta trong javascript, và sau đó gọi window.focus() trong javascript. Điều đó tập trung vào trình duyệt, làm cho nó để bạn có thể chiếm quyền điều khiển các sự kiện bàn phím của trình duyệt !. Sau đó, tôi lắng nghe các sự kiện A-Z hoặc bất cứ điều gì, và vượt qua những người để Flex.

Bước tiếp theo là chỉ khôi phục tiêu điểm trong ứng dụng Flex của bạn đến bất cứ nơi nào trước đó, điều này sẽ dễ dàng.

Chúc mừng, Lance