2009-03-09 6 views
2

Opera/Mac처럼 보이기 때문에 사용자가 ⌘S를 눌렀을 때 액션을 재정의 할 수 없습니다 (기본값은 물론 페이지 저장). 내 오래된 스크립트가 작동하지 않는다는 것을 알았습니다. Ajax를 통해 양식 내용을 서버에 저장합니다.Opera/Mac : cmd + S 이벤트를 재정의 하시겠습니까?

은 여기 onkey입니다 * 핸들러 :

key = ev.keyCode 
if (!key) key = ev.charCode 

if (ev.type == 'keypress' && 115 == key && ev.ctrlKey) return false 
if (83 == key && ev.ctrlKey) { 
    if (ev.type != 'keypress') save_text() 
    return false 
} 

오페라/맥의 첫 번째 불확실성은이 ⌘ 키 대신 실제 Ctrl 키를 ctrlKey를 생성하는 것입니다. 그래서 Safari에서 이것은 표준^S 액션을 광산으로 완벽하게 대체합니다. 하지만 오페라에서는^S가 완전히 무시됩니다. ctrlKey는 ⌘ 용이므로 ⌘S는 사용자가 수행하는 작업에 상관없이 표준 저장 대화 상자를 가져옵니다.

실제로 ⌘S 키를 누르면 Opera의 모든 키 * 이벤트 시퀀스를 모니터링하려고했는데 keyCode 17로 keydown을 누른 다음 keyCode 17로 키를 누른 상태에서 ⌘를 누르면 모두 발생합니다. S를 눌러도 전혀 이벤트가 생성되지 않습니다.

그래서 나는 운이없는 것처럼 보입니다. 누구든지 Opera에서 강제로 ⌘S를 재정의하도록하는 방법을 알고 있습니까? :-)

답변

2

나는 그것을 기능이라고 부르고 싶다. 으로 모든 것을 무시할 수 없습니다. 다음은 Linux에서 Ctrl-Q를 오버라이드하여 브라우저를 닫지 않도록하는 방법을 묻습니다.

1

Mac을 사용하지 않아도되지만 keydown 이벤트에서 preventDefault()를 사용할 것을 기대합니다. 아마도 S 하나, 만약 하나가 해고 당했다면) 이것을 막을 수 있습니다.

여기로 가면 "Prevent default (기본 설정 안 함)"상자를 선택하고 command-s 키를 누릅니다. 저장 대화 상자가 생깁니 까?

http://cross-browser.com/x/examples/key_events.php

+0

예. (* 필수 - 15 자 이상) –

+0

재정의하는 것으로 보입니다. 실제로 작동하지 않습니다. 아마도 https://bugs.opera.com/wizard/에서 보고서를 던지십시오. – hallvors

관련 문제