ios app上 uni-app webview中再通过iframe加载另外一个网页 iframe销毁之后再次打开 iframe里面页面跳转后无法返回

ios app上 uni-app webview中再通过iframe加载另外一个网页 iframe销毁之后再次打开 iframe里面页面跳转后无法返回

2 回复

bug没人管吗?

更多关于ios app上 uni-app webview中再通过iframe加载另外一个网页 iframe销毁之后再次打开 iframe里面页面跳转后无法返回的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在iOS的uni-app WebView中嵌套iframe,再次打开时出现页面无法返回的问题,通常与iframe的销毁和重新加载机制有关。以下是可能的原因及解决方案:

  1. iframe未完全销毁

    • 当iframe被移除时,可能仍有未释放的引用或事件监听,导致重新加载时状态异常。
    • 解决方法:在iframe销毁前,手动清除其内容并移除事件监听。例如:
      let iframe = document.getElementById('myIframe');
      iframe.src = 'about:blank'; // 清空内容
      iframe.remove(); // 移除DOM元素
      
  2. WebView缓存或状态残留

    • iOS WebView可能缓存了iframe的历史记录,导致重新加载时页面栈混乱。
    • 解决方法:在iframe加载时添加时间戳或随机参数,避免缓存:
      iframe.src = 'https://example.com/page?t=' + Date.now();
      
  3. 页面跳转历史栈异常

    • iframe内页面跳转后,可能未正确同步到父页面的历史记录,导致返回按钮失效。
    • 解决方法:通过postMessage监听iframe内的跳转事件,并同步更新父页面的路由状态。例如:
      // iframe内页面发送消息
      window.parent.postMessage({ action: 'navigationChange', url: newUrl }, '*');
      
      // 父页面监听并处理
      window.addEventListener('message', (event) => {
        if (event.data.action === 'navigationChange') {
          // 更新父页面历史记录或状态
        }
      });
回到顶部