zoukankan      html  css  js  c++  java
  • 将模块ID与factory关联在一起的新思路

    这是利用到jquery团队在IE6-8中添加HTML5新标签中的一个hack!

    function createSafeFragment( document ) {
    	var list = nodeNames.split( "|" ),
    	safeFrag = document.createDocumentFragment();
    
    	if ( safeFrag.createElement ) {
    		while ( list.length ) {
    			safeFrag.createElement(
    				list.pop()
    			);
    		}
    	}
    	return safeFrag;
    }
    

    但到IE9后文档碎片就没有createElement方法了。但我们可以改成document.createElement("script")实现。

    但到IE10后如果文档碎片不插入DOM树,就不会发出请求,这个与其他标准浏览器的行为一致。因此与浏览器搏斗真是消耗战啊,人家可以持续升级,把你焦头烂额搞鼓出来的hack秒杀。

    IE的问题在于先parse不一定先onload,加之IE早期的onload是用onreadystatechange 模拟的。另外,IE6还有base标签这东西作崇,逼使我们以倒序插入(insertBefore)。

                var frag = document.createDocumentFragment()
                var script = frag.createElement('script')
    
                frag.moduleID = "lang"
                script.onreadystatechange = function(){
                    console.log(this.parentNode.nodeType);//11
                    console.log(this.parentNode.moduleID);//lang
                    //得到模块ID,然后将它与lang.js中的factory绑定在一起
                    document.getElementsByTagName("head")[0].appendChild(frag)
                }
                script.src = 'lang.js';
                frag.appendChild(script)
    
    机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年
  • 相关阅读:
    springboot mybatis 后台框架平台 集成代码生成器 shiro 权限
    java二维码工具类,中间带LOGO的,很强大
    Itween 动画插件中 的画线
    对象池的简单使用
    DoTween 动画插件简单示例
    快速排序 and 拉格朗日插值查找
    简单工厂模式
    Java集合框架学习
    幂等性学习
    实战重构工厂模式
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/2820372.html
Copyright © 2011-2022 走看看