【问题标题】:Link click works in browser, but not in android webview - IONIC链接点击在浏览器中有效,但在 android webview 中无效 - IONIC
【发布时间】:2019-09-08 18:25:46
【问题描述】:

我正在尝试从我的 rest api 下载 blob 文件。该代码在浏览器中运行时有效,但是当我尝试在 android 应用程序中使用时,该代码什么也不做。并且不显示任何错误。

请看下面的代码:

this.documentService.getURLDocumentConverted(documentMain.DOCUMENT.ID_DOCUMENT).subscribe(
      response => {
          var file = new Blob([response.body], { type: 'application/pdf' });
          var link = document.createElement('a');

          link.href = (window.URL || (window as any).webkitURL || window || {}).createObjectURL(file);
          link.download = fileName + ".pdf";
          link.click();
      }

【问题讨论】:

  • 您是否收到任何错误或警告。检查你的控制台
  • 通常应用程序需要“仅在用户请求时”才能执行某些高优先级操作。
  • @KhurshidAnsari 在控制台中没有错误或警告! :(

标签: javascript angular typescript ionic-framework webview


【解决方案1】:

确保您设置的是WebViewClient。默认情况下,单击链接将发送意图由具有匹配意图过滤器的应用程序处理(通常,您只能看到浏览器应用程序)。我猜没有应用程序为 blob:// 方案注册意图过滤器,因此没有任何东西处理意图(因此,对点击没有可见的反应)。

设置默认构造的WebViewClient 会改变行为:WebView 将自行处理导航。

这在API reference for shouldOverrideUrlLoading() 中有描述。

【讨论】:

  • 你是说在我的下载类中添加私有 webview: WebView 吗?我尝试使用来自 '@ionic-native/ionic-webview/ngx' 的导入 { WebView } 并且不工作。你有一些示例代码吗?
  • 我说的是底层 Java API。您应该查看如何在 ionic 框架中执行等效操作。
猜你喜欢
  • 1970-01-01
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 2015-08-11
  • 1970-01-01
  • 2016-12-10
相关资源
最近更新 更多