2011-06-13 4 views
2

Backspace을 누르면 Web-browser이 이전 페이지로 이동합니다. 삭제 텍스트 기능을 방지하지 않고 어떻게 비활성화 할 수 있습니까?웹 브라우저에서 백 스페이스를 사용하지 않도록 설정하는 방법

+3

Alt + Left는 어떨까요? 마우스 오른쪽 버튼을 클릭하고 뒤로를 선택하면 어떻습니까? 마우스 또는 키보드의 "뒤로"특수 키는 어떻게됩니까? –

+1

일부 OnNavigating 이벤트를 구현하고 마음에 들지 않는 탐색을 거부하려고합니다. 하지만 WebBrowser 컨트롤의 세부 사항에 익숙하지 않습니다. – CodesInChaos

+0

@ Andreas : 나는 'Alt'와 'Right-click'을 막았습니다. – Kermia

답변

3

TWebBrowser에는 OnKeydown 이벤트가없는 것 같으며 다른 많은 문제가 있습니다. 나는 보통 이것을 잊어 버리고 TEmbeddedWB (웹 브라우저 구성 요소 팩이 내장되어 있음)으로 이동하고 더 나은 기능을 가지고 있습니다.

나는, 우리가 편집 컨트롤에있는 경우 탐지하려고하는 몇 가지 코드를 작성하고, Paktas 단순히 OnKey 이벤트가
웹 페이지 형태로 편집 TEmbeddedWB를 사용하여 휴식 것이 차단시키는대로 이후에만 조건부, 백 스페이스 키를 차단 코드는 다음과 같습니다.

procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; 
    Shift: TShiftState); 
var 
    element: IHTMLElement; 
    elementTagName: String; 
begin 
    // form contains field: EmbeddedWB1: TEmbeddedWB which is an improved version of TWebBrowser. 
    element := EmbeddedWB1.GetActiveElement; 
    if Assigned(element) then 
    begin 
     elementTagName := element.tagName; 
    end; 

if (not SameText(elementTagName, 'INPUT')) 
    and (not SameText(elementTagName, 'TEXTAREA')) then 
    if ((Key= VK_LEFT) and (Shift = [ssAlt])) 
    or ((Key= VK_RIGHT) and (Shift = [ssAlt])) 
    or (Key= VK_BROWSER_BACK) 
    or (Key= VK_BROWSER_FORWARD) 
    or(Key = VK_BACK) then 
     begin 
     Key := 0; { block backspace, but not in INPUT or TEXTAREA. } 
     Exit; 
     end; 


end; 
+2

참고 :이 태그는 기록에서 돌아가는 자바 스크립트를 모두 catch하지 않습니다. –

+0

+1. 좋은 지적 Jeroen. –

+2

또한 뒤로 명령이 포함되어 있으므로 오른쪽 클릭 상황에 맞는 메뉴를 사용하지 않도록 설정해야합니다. –

1

이렇게하는 유일한 방법은 각 키 누름을 확인하고 백 스페이스가 감지되면이를 무시하는 것입니다. 그러나 입력 내용에 초점이 맞는지 여부를 모니터링하여 사용자가 뒤로 삭제를 보존 할 수 있도록해야합니다.

관련 문제