百度touch.js对于ios7兼容的一个处理,不解

touch.js是百度开发的一个移动端手势库,虽然貌似已经不更新了,不过对于学习移动手势的开发还是有帮助的,研究源码时,其中一个地方然我不解,是对于ios7进行兼容处理的,不知道是什么原理,代码如下所示

forceReflow : function(){
    var domTreeOpDiv = document.getElementById("domTreeOp");
    if(!domTreeOpDiv){
        domTreeOpDiv = document.createElement("div");
        domTreeOpDiv.id = "domTreeOp";
                document.body.appendChild(domTreeOpDiv);
    }
    var parentNode = domTreeOpDiv.parentNode;
    var nextSibling = domTreeOpDiv.nextSibling;
    parentNode.removeChild(domTreeOpDiv);
    parentNode.insertBefore(domTreeOpDiv, nextSibling);
}

当判断当前操作系统为Ios7后就会执行上述函数。不知道为什么要做这样的处理,上边的代码好像就是往网页里边添加了一个空的div。另外,ios7中发生了什么改变,需要这样的兼容?

阅读 2.3k
1 个回答

谢邀。
forceReflow这函数的名字已经暴露了一切。

你问ios7发生了什么改变需要这样的兼容,说实话,我也不是很清楚,毕竟当我做移动端的时候,已经都不兼容ios7了。
略微翻了下代码,是在事件代理的时候才用了这个方法的,只能猜想是ios7上在某个奇特的地方做了个性能优化策略,touch需要强制回流后才能准确的在相应的位置上分发回去事件。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题