重定向在webview中的iframe在iOS中被阻止
Redirect inside iframe in webview blocked in iOS
我目前正在开发一个web应用程序,该应用程序加载在移动应用程序的webview中的iframe内。当用户单击按钮时,我执行AJAX请求,一旦我获得成功响应,我需要将用户重定向到另一个页面,通过修改window.top.location.href
。这在大多数情况下都有效,但在某些iOS应用中,重定向在相当数量的情况下不会执行。
我试着搜索关于这个的信息,但是考虑到这个特殊的设置,我真的没有找到任何东西。我不能控制iOS应用程序,只能控制在iframe内运行的应用程序,所以它很难调试。
当重定向失败时,它会静默执行重定向。如果我检查应用程序的网络流量,我可以看到没有请求被发送到我尝试重定向到的URL。
我目前的假设是,重定向被阻止作为一种安全措施,因为它不是用户交互的直接结果。您单击一个按钮,发出请求,然后在一两秒钟后发生重定向(取决于请求花费的时间)。我试过用两种方法验证这一点:
-
在发出请求时,点击屏幕上随机的、不可交互的位置。如果有某种简单的计时器,在您与设备交互时重置,以确定是否应该允许重定向,那么点击应该使重定向工作。据我所知,这是事实,但很难证实它不是由其他原因引起的。
-
在重定向之前引入人工延迟。因此,即使请求在500毫秒后完成,在执行重定向之前,我还要再等待5秒。这将导致重定向始终失败。这样做似乎也支持了我的假设,但同样,很难知道这是否是原因。
还有其他人遇到过这个问题吗?如果是这样,我的假设是正确的,你是否想出了另一个解决方案,而不是添加一个"点击继续"按钮来实际做重定向?有任何关于这种行为的文档吗?
我也遇到过同样的问题。模拟点击可以达到这个效果:
document.getElementById('linkElementID').click();
- 防止Iframe窗体在新窗口中打开
- 将样式表插入iframe
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 使用jQuery从原始页面内容创建iframe
- Highslide(iframe的侦听器)
- iframe正在添加标签,需要删除它们
- 通过javascript/html访问twitter共享iframe
- 带有iframe嵌入的Android WebView;t显示在4.2.2及以下
- Android WebView:设置 iframe src 会重定向页面
- 从Android WebView获取iframe数据
- 如何在Android WebView中改变iframe的大小
- Android WebView的postMessage从iframe与页面的资产
- IPhone的webview和iframe问题
- Android WebView iframe - Replace src
- 使用YouTube's iFrame播放器在iOS webview中渲染内联视频
- 可以在我的网站内的iframe可以访问webview-js桥对象
- Cookie在安卓Webview的iframe中不起作用
- 网页抓取 - 无法使用Javascript和WebView单击HTML输入按钮(可能是iframe问题,不确定)
- 重定向在webview中的iframe在iOS中被阻止