使用网络浏览器时后退按钮不起作用

Posted

技术标签:

【中文标题】使用网络浏览器时后退按钮不起作用【英文标题】:Back button won't work when using the webbrowser 【发布时间】:2014-06-17 05:52:55 【问题描述】:

我已经下载了 xe6 的试用版并使用名为 webbrowser 的示例。 我想用返回按钮关闭应用程序..

这是我在示例中插入的内容

procedure TWebBrowserForm.FormKeyUp(Sender: TObject; var Key: Word;
  var KeyChar: Char; Shift: TShiftState);
begin
  if Key = vkHardwareBack then
  begin
    SharedActivity.Finish;
  end;

这可行并关闭应用程序..但是当我单击浏览器内的链接然后按后退按钮时应用程序不会关闭..

我也试过这个http://www.fmxexpress.com/virtual-keyboard-with-twebbrowser-on-android-in-delphi-xe5-firemonkey/

【问题讨论】:

这是正常行为。您的浏览器接收并保持焦点(Embarcadero 就是这样解决了将文本写入 html 页面上的编辑字段的问题)。我不确定,但请尝试将焦点移至表单上的另一个控件(可能您必须调用 TWebBrowser.SetFocus(False)),然后再次按返回。 另外我想你的问题在 Delphi XE5 上是不可复制的。 我试图专注于另一个控件,但没有运气..后退按钮不起作用..如果您在 xe5 或 xe6 中尝试来自 Embarcadero 的示例并处理hardwareback键..您会看到单击网络浏览器中的几个链接时不会触发该键.. 我认为 EMB 应该修复这个错误。 我认为另一个错误是。当您键入 www.google.com 然后搜索例如汽车并尝试单击链接时。你会得到一个白屏 【参考方案1】:

请在此写入 onKeyDown 事件

  if Key = vkHardwareBack then
  begin
    SharedActivity.Finish;
  end;

【讨论】:

Embarcadero 在 XE6 更新 1 中修复了这个错误【参考方案2】:

在 Android 上,您可以改用 TMS Web 浏览器。该组件有一个 OnHardwareButtonClicked 事件,该事件检测硬件后退按钮的单击。我就是这样处理这个问题的。该组件在点击 URL 内的 URL 时非常友好。

【讨论】:

以上是关于使用网络浏览器时后退按钮不起作用的主要内容,如果未能解决你的问题,请参考以下文章

浏览器和应用栏中的后退按钮在 Flutter Web 开发中不起作用

如何禁用浏览器后退按钮..? [复制]

iCheck 复选框在颤动的 Android 网络视图中不起作用

后退按钮(浏览器行为)

后退按钮在 React 中显示空白页

从 vb.net 提交的网络浏览器不起作用