重定向在webview中的iframe在iOS中被阻止

Redirect inside iframe in webview blocked in iOS

本文关键字:iframe webview 中的 重定向 iOS      更新时间:2023-09-26

我目前正在开发一个web应用程序,该应用程序加载在移动应用程序的webview中的iframe内。当用户单击按钮时,我执行AJAX请求,一旦我获得成功响应,我需要将用户重定向到另一个页面,通过修改window.top.location.href。这在大多数情况下都有效,但在某些iOS应用中,重定向在相当数量的情况下不会执行。

我试着搜索关于这个的信息,但是考虑到这个特殊的设置,我真的没有找到任何东西。我不能控制iOS应用程序,只能控制在iframe内运行的应用程序,所以它很难调试。

当重定向失败时,它会静默执行重定向。如果我检查应用程序的网络流量,我可以看到没有请求被发送到我尝试重定向到的URL。

我目前的假设是,重定向被阻止作为一种安全措施,因为它不是用户交互的直接结果。您单击一个按钮,发出请求,然后在一两秒钟后发生重定向(取决于请求花费的时间)。我试过用两种方法验证这一点:

  1. 在发出请求时,点击屏幕上随机的、不可交互的位置。如果有某种简单的计时器,在您与设备交互时重置,以确定是否应该允许重定向,那么点击应该使重定向工作。据我所知,这是事实,但很难证实它不是由其他原因引起的。

  2. 在重定向之前引入人工延迟。因此,即使请求在500毫秒后完成,在执行重定向之前,我还要再等待5秒。这将导致重定向始终失败。这样做似乎也支持了我的假设,但同样,很难知道这是否是原因。

还有其他人遇到过这个问题吗?如果是这样,我的假设是正确的,你是否想出了另一个解决方案,而不是添加一个"点击继续"按钮来实际做重定向?有任何关于这种行为的文档吗?

我也遇到过同样的问题。模拟点击可以达到这个效果:

document.getElementById('linkElementID').click();