2011-06-13 26 views
2

當我按Backspace時,Web-browser將轉到上一頁。如何在不阻止清除文本的情況下禁用它?如何在WebBrowser中禁用Backspace

+3

Alt + Left怎麼樣?關於右鍵點擊並選擇返回?那麼鼠標或鍵盤上的「後退」特殊鍵怎麼辦? – 2011-06-13 11:48:24

+1

您可能想要實施一些OnNavigating事件並拒絕您不喜歡的導航。但我不熟悉WebBrowser控件的細節。 – CodesInChaos 2011-06-13 12:03:27

+0

@Andreas:我阻止了「Alt」和「右鍵單擊」。 – Kermia 2011-06-13 12:15:15

回答

3

TWebBrowser似乎沒有OnKeydown事件,它也有許多其他問題。我通常會忘記它,並去TEmbeddedWB(嵌入式Web瀏覽器組件包),它具有更好的功能。

我寫了一些代碼,嘗試檢測,如果我們在編輯控件中,只有有條件地阻塞退格鍵,因爲作爲Paktas說,簡單地阻止安其事件將打破編輯在
網頁形式,使用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

請注意,這將無法捕捉歷史記錄中的任何JavaScript。 – 2011-06-13 18:03:54

+0

+1。好點Jeroen。 – 2011-06-13 18:22:11

+2

此外,您必須禁用右鍵單擊上下文菜單,因爲它們包含後退命令。 – 2011-06-13 18:35:34

1

這樣做的唯一方法是檢查每個按鍵,如果檢測到退格,則忽略它。但是,您還需要監視是否有任何輸入焦點,以便用戶可以繼續保持向後刪除。

相關問題