我们的产品在 IOS 11.3 上失败,出现“问题重复发生在”。当连接到 MAC 上的远程调试器时,它会正常工作,因此很难找出原因。我花了相当多的时间来找出真正的原因。这很困难,因为我们使用了一个用 knockout.js 编写的巨大内部框架,该框架被缩小并通过我们自己的强制门户提供的强制网络访问 IOT 设备。在这里调试几乎是不可能的,因为在调试模式下运行服务器会表现出不同的服务器行为。
我想发布这个,以防有人遇到/将会遇到类似的问题。
我们的 webapp 上有一个超链接的侧边导航窗格,它由一个 observable 填充,通过调用另一个视图模型模块来附加数据。
mainNavigationSection(
createNavigationMenuVm(
mainTree.views() || [],
newSelectedFolder));
内部调用的视图模型模块有一个包含所需数据的可观察对象。因此,我们将 mainNavigationSection() observable 附加到一个对象,该对象具有一个函数的属性值,该函数的构造在剔除参数 _latestValue 中具有所需的数据。当在模板中调用这样的 observable 时,IOS 11.3 不知何故无法解释这一点。
导航栏.jade
li(data-bind="template: { name: 'navigation.navigationSection-jade', data: mainNavigationSection() }", class="css-treeview")
导航.navigationSection.jade
ul(data-bind="foreach: navigationItems")
// ko template: { name: 'navigation.navigationItem-jade', data: $data }
// /ko
当域在 IOS 11.3 设备上加载时,它会在此处中断并尝试重新加载页面,最后放弃一般消息,“问题重复发生在”。
FIX 最好说它是创可贴。实际的修复需要在 IOSwebkit 端进行。
当我将 observable 更改为像这样附加时,一切正常。
var navModel = createNavigationMenuVm(
mainTree.views() || [],
newSelectedFolder);
var navMenu = {
navigationItems: navModel.navigationItems._latestValue
};
mainNavigationSection(navMenu);
希望这对某人有所帮助,直到苹果修复他们的 webkit。