javascript - 滚动 UI 时 UI 未更新

标签 javascript ios cordova uiwebview phonegap

我正在开发 Cordova 应用程序。我在哪里连接到实时传感器并从传感器读取一些数据。问题是当我 ScrollView 时数据被打乱。这在 Android 中有效,但在 iOS 中无效。

这是我的代码片段。

<div id="right_col">
   <button onclick="clearReceivedData()">Clear Received Data</button>
   <br>
   <div id="receivedData"></div>
</div>


function dataReceivedCallback(data) {
  document.getElementById("receivedData").innerHTML += data.value1 + ": ";
  document.getElementById("receivedData").innerHTML += data.value2 + ":";
  document.getElementById("receivedData").innerHTML += data.value3 + "<br>";
}

dataReceivedCallback 将为从传感器接收到的每个数据调用。此回调也会阻塞,直到滚动完成。如何在滚动 UI 时更新 UI。

最佳答案

iOS 在滚动期间暂停 JS 执行以提供流畅的滚动体验。 Apple 建议使用被动事件监听器进行滚动。即使基于试图使执行去抖动的其他答案,也无法解决您的问题。您可以尝试将 passive 设置为 true:

something.addEventListener("scroll", callback, { passive: true })

虽然它可以改善您的情况,但很可能无法解决您在 iOS 上遇到的问题。

尝试将您的代码包装在 requestIdleCallbackrequestAnimationFrame 中。

确保您遵循了不要多次访问 DOM 树的建议。

关于javascript - 滚动 UI 时 UI 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47885394/

相关文章:

iphone - 发布数据但获取方法 json -ios

ios - iOS-Phonegap-条码扫描器

ios - 将数据从一个 Collection View 传递到嵌入式 Collection View

javascript - 如何在 JavaScript 中创建对象/数组?

javascript - 使用浏览器的访问键在所有链接的第一个字符下划线

javascript - 如何将 html 转换为 JSX、ReactJS 组件?

ios - 在 iOS swift 中旋转和混合图像

html - 为什么在我添加视口(viewport)元标记时 PhoneGap 不会以不同方式呈现我的页面?

javascript - 从数组元素创建 div

javascript - Codeception 中的 jQuery 未定义