WkWebview 被 Angular 冻结了

Posted

技术标签:

【中文标题】WkWebview 被 Angular 冻结了【英文标题】:WkWebview is freezing with Angular 【发布时间】:2017-01-17 07:21:25 【问题描述】:

背景

我们有一个简单的 Angular+Bootstrap 应用程序,它在使用 WkWebview 嵌入我们页面的外部应用程序中运行。该应用程序在桌面所有操作系统、android 和 Iphone 中运行良好。 没有 javascript 错误或 CSS 警告。

问题

但是,当我们点击<a href="#screen2" 时,它随机在 iPad 中停止运行。这会触发routerProvider 的更改,以更改屏幕控制器和模板。 它的接缝就像一个透明层正在锁定整个屏幕。或者所有事件(点击标签滚动)都被锁定。

怪事

如果我们将方向更改为横向,屏幕将被解锁。如果我们再次转向纵向,它会再次锁定。

附加

我们无法将 WkWebview 更改为更新的。我们只能控制 webapp。 我们知道 WkWebview 有几个相关的问题: 滚动、焦点和显示更改会影响渲染并导致空白或冻结屏幕。 我们还使用此脚本来避免某些焦点事件出现黑屏:

(function()
  try
      var a=navigator.userAgent;
      if((a.indexOf('Salesforce')!=-1)&&(a.indexOf('iPhone')!=-1||a.indexOf('iPad')!=-1)&&(a.indexOf('OS/8')!=-1||a.indexOf('OS 8')!=-1||a.indexOf('OS/9')!=-1||a.indexOf('OS 9')!=-1||a.indexOf('OS 10')!=-1||a.indexOf('OS/10')!=-1)&&(a.indexOf('Safari')==-1))
        var s=document.createElement('style'); 
        if(a.indexOf('OS/8')!=-1||a.indexOf('OS 8')!=-1) 
            s.innerhtml="html,html bodyoverflow: auto;-webkit-overflow-scrolling:touch;bodyposition:absolute;left:0;right:0;top:0;bottom:0;";
        
        else if(a.indexOf('OS/9')!=-1||a.indexOf('OS 9')!=-1) 
            s.innerHTML="html,html bodyoverflow: auto;-webkit-overflow-scrolling:auto;bodyposition:absolute;left:0;right:0;top:0;bottom:0;";
        
        else if(a.indexOf('OS/10')!=-1||a.indexOf('OS 10')!=-1) 
            s.innerHTML="html,html bodyoverflow: auto;-webkit-overflow-scrolling:auto;bodyposition:absolute;left:0;right:0;top:0;bottom:0;";
        
        document.getElementsByTagName('head')[0].appendChild(s);
      
   catch(e)
)();

问题

有什么办法可以解决这个问题吗?

提前致谢

【问题讨论】:

【参考方案1】:

如果更好地分享链接进行交叉检查,您的陈述会有两个问题

1)Angular+bootstrap 应用问题 检查您的应用程序操作系统生产版本与否,图像、css 是否已缩小以及是否支持 DSN。

2)WkWebview 问题:您在 Wkwebview 上检查 Web 应用程序有一些内存限制,但在检查 webview 的配置设置之前

https://developer.apple.com/documentation/webkit/wkwebviewconfiguration

【讨论】:

以上是关于WkWebview 被 Angular 冻结了的主要内容,如果未能解决你的问题,请参考以下文章

UISplitViewController+UIPageViewController+WKWebView = 有时不能翻页

WKWebView - 获取html表单的查询参数

Angular - 调度动作时出现“TypeError:无法冻结”

Angular/ HTML5 到 iOS WKWebView 通信

将 cookie 传递给 WKWebView / SFSafariViewController?

iOS 让WKWebView侧滑返回时html逐级返回