页面样式覆盖的问题分析及优化

最近接到一个项目实例,需要在客户端内嵌入网站页面,首相想到的就是网站页面样式问题(是不是自适应,网站的访问限制等)。好那么最后得出的结论就是网站样式功能在客户端存在差异(客户端实现浏览网页方式是嵌入cef内核-Google)
1.样式覆盖
2.动态调整dom节点的宽高

$(document).ready(function(){
    //样式功能覆盖
});

好的那就先简单的实现功能的显示隐藏、样式的动态改变测试一下效果,结果没有预期的那么理想。页面的脚本存在异步的请求问题(页面的html存在异步加载),
这样我们没办法用ready、onload监听页面全部元素的加载,造成样式的覆盖失效。
那么接下来换一种思路 - setInterval clearInterval


  var t = setInterval(function(){
        if($('#...')){
            //样式功能覆盖
            clearInterval(t);
        }
    },200);

上述方式虽然可以监听页面部分异步加载元素的完成状态
这种轮循造成的开销很大、另外页面还是存在覆盖的时间间隔问题等(覆盖延迟)
正常的前端代码开发规范不允许有setTimeout、setInterval等(除非特殊情况)
好的换一种思路
从轮循监听页面的变化(是否有指定新生成的节点) 转变为 监听页面元素的更新

$(document).ready(function(){
    $(document.body).bind('DOMNodeInserted', function(e) {  
        var e = e.target || {};
        var classWord = e.className || "";
        if(classWord.indexOf("节点样式")!=-1){
            //样式功能覆盖
            $(document.body).unbind("DOMNodeInserted");
        }
    });  
});

注:本实例仅个人开发实践过程,如有不妥或更好建议请留言交流

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,653评论 25 709
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,686评论 1 92
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 4,997评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,477评论 19 139
  • 在日常生活中,我们总会制定很多计划,比如新年心愿,2017年过半,不知道各位年初制定的计划都实现了那些?又或者还是...
    让我来阅读 4,012评论 0 1