我想要实现,当用户点击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. 如何在HTA的默认Web浏览器中打开链接?
- 3. web浏览器的I帧在默认浏览器中打开
- 4. 如何使用JavaMe在默认浏览器中打开链接?
- 5. 如何强制WebView在默认浏览器中打开链接?
- 6. 在QtWebView中捕获链接点击并在默认浏览器中打开
- 7. 如何打开默认浏览器
- 8. 打开IE浏览器时点击浏览器中的链接c#?
- 9. 打开浏览器不能正常工作时,铬是默认浏览器
- 10. 在默认浏览器中打开Android webview链接
- 11. 在默认浏览器中打开WebView链接
- 12. 使用默认浏览器打开浏览器/ URL
- 13. 尽管默认浏览器打开另一个浏览器
- 14. vb.net web浏览器链接到默认Web浏览器
- 15. 如何在C#中使用默认浏览器打开Web浏览器中的链接?
- 16. 在浏览器中打开链接?
- 17. 默认打开IE浏览器
- 18. 打开默认Web浏览器
- 19. Webview loadurl打开默认浏览器
- 20. C++ OS X打开默认浏览器
- 21. 点击Vimeo打开默认浏览器 - Android
- 22. iOS - 如何打开默认浏览器(Safari或Chrome)中的链接而不是应用内浏览器?
- 23. 如何在默认浏览器中从hta打开iframe中的链接
- 24. webview链接打开到默认浏览器
- 25. 下载链接点击浏览器中打开下载窗口
- 26. Safari浏览器的iOS - 点击链接
- 27. 在现有的浏览器打开网址不是默认的浏览器
- 28. 点击链接打开新的浏览器窗口
- 29. 在外部浏览器中打开web浏览器控件中的链接?
- 30. WebView点击打开移动浏览器
在'OnBeforeBrowse'事件检查,如果'navType'等于'NAVTYPE_LINKCLICKED'如果是的话,返回True到'Result'参数(这将取消对Chromium的请求)并调用例如'ShellExecute'传递'request.Url'。 – TLama 2014-09-02 15:28:16
太棒了。你为什么不发布这个答案?太不适合你了? :) – Domus 2014-09-02 15:56:06