Cocoa:WKWebView / WebView 无法打开 Gmail 或 Inbox 内的链接

2023-12-31

我是开发者Boxy http://boxyapp.co,一个著名的 Inbox by Gmail 原生包装器,我想询问是否有人能够帮助解决我从开发第一天起就一直在努力解决的问题。

问题是这样的:链接inbox.google.com http://inbox.google.com and gmail.com http://gmail.com与其他网站的工作方式不同:单击它们不会触发我的网络视图上的导航操作(我正在使用WKWebView具体来说,但使用旧的也存在问题WebView)。因此,我很难在适当的时候在外部浏览器中打开链接。

因此,在撰写本文时,我依靠一种可怕的黑客手段来打开链接:拦截对document.body使用 javascript(使用事件侦听器),然后通过调用本机应用程序强制它们在外部浏览器上打开。

我最好的猜测是,Gmail/Inbox 应用程序执行了一些 JavaScript 魔法,以便跟踪电子邮件内所有链接的点击,并且不知何故,这会干扰标准行为。

有谁知道我如何解决这个问题?

我已经尝试过的事情

  • 实施该方法-webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures: of WKUIDelegate。不起作用:该方法被调用但request与相关的navigation action是空的。

我找到了解决方案。此问题是由于单击链接时,Gmail 尝试打开 about:blank 窗口,然后运行 ​​javascript 来重定向链接,而不是使用 target=_blank 打开。 您需要确保Gmail可以正确接收创建的窗口的句柄。

- (WKWebView *)webView:(WebUI *)webView
createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration
forNavigationAction:(WKNavigationAction *)navigationAction
windowFeatures:(WKWindowFeatures *)windowFeatures

您需要确保此委托方法正确返回新创建的 wkwebview。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cocoa:WKWebView / WebView 无法打开 Gmail 或 Inbox 内的链接 的相关文章

  • 使用 AngularJs NgResource 从本地主机加载 JSON 文件

    Overview 我正在构建一个应用程序 在 MAMP 上运行 该应用程序包含联系信息 一旦该部分正常运行 该应用程序将扩展以包含更多数据 例如项目名称和截止日期 问题 当用户访问时 projects php project 我希望他们看到
  • 有没有比 setTimeout 更准确的方法来创建 Javascript 计时器?

    一直困扰我的是事情的不可预测性setTimeout Javascript 中的方法是 根据我的经验 计时器在很多情况下都非常不准确 我所说的不准确是指实际延迟时间似乎或多或少有 250 500 毫秒的差异 尽管这并不是一个很长的时间 但当使
  • 如何将 CAD (DWG) 文件转换为 GeoJSON?

    我正在使用 OpenLayers 需要将 DWG 文件转换为 GeoJSON 格式 我怎样才能做到这一点 事实上 GDAL 拥有完成此任务所需的工具 ogr2ogr 是 GDAL 中包含的一个程序 可以转换多种格式 https gdal o
  • Typescript:如何在 Redux 中输入 Dispatch

    例如我想删除dispatch any here export const fetchAllAssets gt dispatch any gt dispatch actionGetAllAssets return fetchAll getPr
  • For 循环覆盖 HTML 中的文本

    我的数组称为myEmployees其中有 5 个名字 但当我运行代码时 它只打印出其中的 3 个 我相信这种情况正在发生 因为for脚本中的循环会覆盖它在 HTML 文档中编写的前一行 我怎样才能解决这个问题 年度公告板公告 恭喜泰勒 你在
  • 打开一个新的浏览器窗口/iframe 并在 TEXTAREA 中从 HTML 创建新文档?

    我正在尝试使用 HTML5 的新离线功能编写一个 Web 应用程序 在此应用程序中 我希望能够编辑一些 HTML 完整文档 而不是片段
  • 使用 jquery UI 调整大小的分屏 div

    我心中有一个设计 涉及 html 中的拆分面板视图 类似于 winforms 拆分面板 我一直在尝试jQuery UI 可调整大小 http jqueryui com demos resizable我喜欢这个功能 我只是似乎无法协调两者的大
  • 如何连接我的 angular2 应用程序 javascript 文件

    对于我的 Angular2 TypeScript 应用程序 我将所有 js 文件合并到一个 app min js 文件中 然后 System import 将此文件导入到我的 index html 页面 然后我得到一个同一模块文件中的多个匿
  • 如何编写具有依赖状态的 redux 减速器

    我正在开发一个 React Redux 应用程序 它允许将 小部件 添加到页面并在 2D 空间中进行操作 要求可以同时选择和操作多个小部件 我当前状态树的简化版本如下所示 widgets widget 1 x 100 y 200 widge
  • onbeforeunload 或单击浏览器后退按钮需要帮助

    如果用户单击浏览器的后退按钮 那么我希望出现提示并要求确认 如果用户单击 确定 那么它应该导航到xx html 如果用户单击 取消 则应阻止导航 我怎样才能做到这一点 注意 我已经尝试过onbeforeunload方法 但它适用于所有导航操
  • Django CBV表单提交返回的JSON显示为新页面

    我正在使用 Django 3 2 我正在创建一个简单的时事通讯订阅表格 表单提交将 JSON 返回到前端 然后应该使用前端来更新页面的部分内容 但是 当我发布表单时 JSON 字符串将在新页面上显示为文本 这是调用视图的路由 urlpatt
  • d3 饼图中的文本被路径覆盖

    我正在尝试按照 d3 的饼图示例进行操作http bl ocks org mbostock 3887235 http bl ocks org mbostock 3887235 我的代码的最小示例 const container graph
  • 使用 webpack 保留输出目录中的文件夹结构

    我有以下文件夹结构 index html app index tsx 与 webpack 捆绑后 我希望有以下输出目录 并将bundle js注入到index html中 dist index html dist app bundle js
  • Internet Explorer 10,最大 div 大小为 1.533.917 像素

    我需要制作一个非常大的 div 以百万像素为单位 搜索我发现这个线程证明 IE 可以管理最多 10 000 000 px 确定最大可能的 DIV 高度 https stackoverflow com questions 7719273 de
  • 如何将嵌套对象数组转换为 CSV?

    我有一个包含嵌套对象的数组 例如 name 1 children name 1 1 children 1 2 id 2 thing name 2 1 children 2 2 name 3 stuff name 3 1 children 3
  • SVG 沿圆弧添加文本

    我正在尝试绘制 SVG 径向饼图 如下所述 色卡 https stackoverflow com a 18210763 1395178 现在我尝试将文本与圆弧一起添加到每个切片 我试图展示Text 1具有与 M 和 A 值完全相同的 x y
  • 在 Node.js 中封装 require 可以解决相对路径调用

    我正在尝试创建一个 require 包装器来加载依赖项 但我发现很难让它像原始的 require 函数一样工作 当路径是相对路径时 包装器无法解析为正确的路径 因为我的加载程序和调用程序文件不在同一文件夹中 这是一个简化的描述 index
  • Google 脚本过滤一个值的范围

    我想过滤第 1 列中仅包含 Bob 特定值的行的 google 工作表范围 到目前为止 我的代码允许我过滤out第 1 列中有 Bob 的行 我需要相反 我想返回第 1 列中只有 Bob 的行 因此 其中 filterSettings 不是
  • PhoneGap文件传输错误1、哪里写FileTransfers?

    相关 https stackoverflow com questions 21044197 download file and store them locally in sdcard using phonegapbuild https s
  • 有没有办法避开 Google 路线中的特定道路或坐标?

    API 有一个航路点参数 以便 API 计算经过指定航路点的路线 有什么方法可以给出要避开的航路点而不是要经过的航路点 它 目前 尚未实施 有一个开放的功能请求 问题 214 影响方向的能力 例如 避免 路障 https code goog

随机推荐

  • 根据浏览器高度和宽度保持纵横比和字体大小?

    下面的代码附在window onresize resize The baseWidth and baseHeight在负载上读取作为计算的基础 这main变量只需将其设置到主 html 节点即可定义 字体设置在块元素上会导致所有的em基于其
  • ASP.NET Core 1.0 是否支持 ApiExplorer?如何使用它?

    ASP NET Core 1 0支持使用API Explorer吗 我无法找到任何有关它的文档或如何使用它 有人使用过它并且可以分享一些见解吗 Itay的回答帮助我得到了我想要的答案 Rob Lang 博士向任何需要使用 ApiExplor
  • ajax 调用的生命周期是多长?

    假设我在 javascript 中有这段代码 function doAnAjaxCall var xhr1 new XMLHttpRequest xhr1 open GET mylink true xhr1 onreadystatechan
  • 错误:运算符“++”的操作数必须是左值

    In C i j 在代码中工作正常 但是当我使用时 i j 我收到以下错误 Operand for operator must be an lvalue 为什么我会收到此错误 后自增要求操作数应该是可修改的左值但后自增的结果是prvalue
  • 会话超时混乱 - session.setMaxInactiveInterval(0)

    我是 JEE 的新手 这让我感到困惑 根据HttpSession html setMaxInactiveInterval int 间隔 http docs oracle com javaee 7 api javax servlet http
  • 共享 OpenGL VAO/VBO/等。通过 QGLWidget

    我正在使用 QGLWidgets 的 3 层层次结构在我的类似 CAD 的应用程序中的 5 个 OpenGL 视口之间共享着色器和顶点数据 根上下文用于编译应用程序范围的着色器 每个文档上下文用于共享模型顶点数据 视口上下文是实际进行渲染的
  • 如何在 XML 属性值中包含 &、<、> 等

    我想创建一个 XML 文件 用于存储 Java 程序的结构 我能够成功解析 Java 程序并根据需要创建标签 当我尝试将源代码包含在标签中时 问题就出现了 因为 Java 源代码可能使用大量实体引用和保留字符 例如 lt gt 我无法创建有
  • d3 过滤后无法附加完整数据

    我有一个项目的简化版本 我将其浓缩为以下片段 var margins top 20 bottom 300 left 100 right 100 var height 600 var width 1200 var totalWidth wid
  • 将 GraphML 转换为 GV 或 Dot 文件

    如何使用 graphml 文件作为输入在 graphviz 中绘制图形 I know graphviz附带graphml2gv为此目的 但是当我尝试从命令提示符运行此命令时 我收到此消息 cvtgxl not configured for
  • 如何在我的父 git 项目中使用 git 存储库?

    我尝试使用子模块将 github 存储库中的副本保留在我的第 3 方目录中 创建并获取文件后 当我从项目提交时 它只能看到文件夹 看不到文件 是的 文件在那里 有具体命令吗 在 GitHub 上 你只会看到一个灰色文件夹 https sta
  • Jackson 中的 readValue 和 readTree:何时使用哪个?

    我刚刚开始使用 Jackson JSON 库 Jackson 是一个非常强大的库 但它有非常广泛的 API 很多事情可以通过多种方式完成 这使得你很难在杰克逊找到自己的方式 如何知道什么是正确 最好的做事方式 为什么我要使用这个解决方案 S
  • C 中的递归函数:return 总是必要的吗?

    这是我第一次使用递归函数 我编写的这个函数如果仅包含按升序排列的字母 则返回字符串的大小 否则返回 1 在我取出第二个 返回 后 我不明白为什么它对这两个代码都有效 一个比另一个更浪费吗 希望有一些见解 with returnonly as
  • opencv4nodejs如何计算拉普拉斯方差的模糊度

    我有一个代码 const cv require opencv4nodejs let text let image cv imread images focused jpg let gray image cvtColor cv COLOR B
  • Apache Kafka 0.9.0.0 显示所有带分区的主题

    我目前正在评估 Apache Kafka 我有一个简单的消费者 应该从特定主题分区读取消息 这是我的客户 public static void main String args Properties props new Properties
  • Pyspark dataframe 获取列的所有值

    我想获取 pyspark 数据框中列的所有值 我做了一些搜索 但从未找到有效且简短的解决方案 假设我想在名为 name 的列中获取一个值 我有一个解决方案 sum dataframe select name toPandas values
  • 如何停止 Kubernetes 控制平面 Pod?

    只是好奇 使用 mesos 我已经习惯了能够做到这一点systemctl stop mesos master and systemctl start mesos master 如果我因某种原因需要退回 对于 k8s 控制平面中有多个组件需要
  • 检查端口是否开放

    我似乎找不到任何东西可以告诉我路由器中的端口是否打开 这可能吗 我现在拥有的代码似乎并不能真正工作 private void ScanPort string hostname localhost int portno 9081 IPAddr
  • 如何在Maven项目中包含本地jar文件[重复]

    这个问题在这里已经有答案了 我不想将一些 jar 安装到 Maven 存储库 本地 远程 中 特别是我有一些 jar 文件位于 c work projects myapp src main webapp WEB INF lib test j
  • Asciifolding 不起作用 Elastic Search Rails

    我在试图获得 阿斯奇折叠 为我的 Rails 应用程序工作 我想搜索包含 的单词accented 例如我想要的字符 for ige 当我搜索时出现 foroige 我已经尝试了很多事情 下面是其中的一些 analysis analyzer
  • Cocoa:WKWebView / WebView 无法打开 Gmail 或 Inbox 内的链接

    我是开发者Boxy http boxyapp co 一个著名的 Inbox by Gmail 原生包装器 我想询问是否有人能够帮助解决我从开发第一天起就一直在努力解决的问题 问题是这样的 链接inbox google com http in