我想要實現,當用戶點擊TChromium瀏覽器頁面內的超鏈接時,新頁面將在其默認瀏覽器中打開。如何在默認瀏覽器中打開鉻瀏覽器鏈接的點擊?
回答
在如果navType
參數等於NAVTYPE_LINKCLICKED
並且如果是這樣的OnBeforeBrowse
事件檢查,返回True到Result
參數(這將取消對鉻的請求),並調用例如ShellExecute
傳遞request.Url
值在用戶的默認瀏覽器中打開鏈接:
uses
ShellAPI, ceflib;
procedure TForm1.Chromium1BeforeBrowse(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame; const request: ICefRequest;
navType: TCefHandlerNavtype; isRedirect: boolean; out Result: Boolean);
begin
if navType = NAVTYPE_LINKCLICKED then
begin
Result := True;
ShellExecuteW(0, nil, PWideChar(request.Url), nil, nil, SW_SHOWNORMAL);
end;
end;
mabybe add an 「else Result:= False」 ? – Domus 2014-09-03 11:40:15
在該方法開始時可能會出現'Result:= False',但不需要,因爲False是['initial result'](https://code.google.com/p/delphichromiumembedded/source/browse/)軀幹/ SRC/cefvcl.pas#644)。 – TLama 2014-09-03 11:51:30
你當然是對的,但是Delphi的一個缺乏參數更多的暗示情況。 :) – Domus 2014-09-03 12:05:54
在CEF3,navType = NAVTYPE_LINKCLICKED
不再可能在OnBeforeBrowse
事件,如TLama的答案。相反,我發現瞭如何檢測到這種使用TransitionType
財產...
procedure TfrmEditor.BrowserBeforeBrowse(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const request: ICefRequest; isRedirect: Boolean; out Result: Boolean);
begin
case Request.TransitionType of
TT_LINK: begin
// User clicked on link, launch URL...
ShellExecuteW(0, nil, PWideChar(Request.Url), nil, nil, SW_SHOWNORMAL);
Result:= True;
end;
TT_EXPLICIT: begin
// Source is some other "explicit" navigation action such as creating a new
// browser or using the LoadURL function. This is also the default value
// for navigations where the actual type is unknown. Do nothing.
end;
end;
end;
- 1. 打開Web瀏覽器點擊默認瀏覽器
- 2. 如何防止在點擊TextView中的鏈接時打開默認瀏覽器?
- 3. 如何在HTA的默認Web瀏覽器中打開鏈接?
- 4. web瀏覽器的I幀在默認瀏覽器中打開
- 5. 如何強制WebView在默認瀏覽器中打開鏈接?
- 6. 如何使用JavaMe在默認瀏覽器中打開鏈接?
- 7. 在QtWebView中捕獲鏈接點擊並在默認瀏覽器中打開
- 8. 如何打開默認瀏覽器
- 9. 打開IE瀏覽器時點擊瀏覽器中的鏈接c#?
- 10. 在默認瀏覽器中打開URL
- 11. 打開瀏覽器不能正常工作時,鉻是默認瀏覽器
- 12. WinRT:無論默認瀏覽器在Internet Explorer中打開鏈接
- 13. MoSync:在默認瀏覽器中打開鏈接
- 14. 在默認瀏覽器中打開WebView鏈接
- 15. 在默認瀏覽器中打開所有超鏈接
- 16. 在默認瀏覽器中打開Android webview鏈接
- 17. 使用默認瀏覽器打開瀏覽器/ URL
- 18. 儘管默認瀏覽器打開另一個瀏覽器
- 19. vb.net web瀏覽器鏈接到默認Web瀏覽器
- 20. 如何在C#中使用默認瀏覽器打開Web瀏覽器中的鏈接?
- 21. 如何在用戶的默認瀏覽器中打開客戶端集成瀏覽器的鏈接?
- 22. 如何在PhoneGap上的InApp瀏覽器內部的默認瀏覽器中打開鏈接
- 23. webChromeClient在瀏覽器中打開鏈接
- 24. 在瀏覽器中打開鏈接?
- 25. 點擊texview中的鏈接後,如何在webview而不是默認瀏覽器中打開該鏈接?
- 26. Webview loadurl打開默認瀏覽器
- 27. 默認打開IE瀏覽器
- 28. 瀏覽器:打開默認主頁
- 29. 打開默認Web瀏覽器
- 30. C++ OS X打開默認瀏覽器
在'OnBeforeBrowse'事件檢查,如果'navType'等於'NAVTYPE_LINKCLICKED'如果是的話,返回True到'Result'參數(這將取消對Chromium的請求)並調用例如'ShellExecute'傳遞'request.Url'。 – TLama 2014-09-02 15:28:16
太棒了。你爲什麼不發佈這個答案?太不適合你了? :) – Domus 2014-09-02 15:56:06