假设默认的html head内容如下,我希望在head内的第一句加入我的script内容,实现后面的html、js、css内容都不再加载。
我开始感觉根本不可能实现,因为浏览器是先加载当前的html内容,之后在逐步加载js文件。但有家公司(云适配 yunshipei.com)已经实现了这样的功能,让我感觉很离奇?研究它的js代码两天也没有结果,有没有高手帮忙看看,帮我解惑??!!
云适配这样做是为了让所有适合pc访问的网站,通过加入一行他的js代码,就变成了适合手机访问的网站,我通过iphone safri web inspecter 看了,同一个页面在手机上访问,确实内容已经改变了,没有在加载原有多余的js和css。
全选复制放进笔记<HTML xmlns="http://www.w3.org/1999/xhtml">
<script id="allmobilize" charset="utf-8" src="http://pro.yunshipei.com/nwupl_edu_cn/allmobilize.min.js"></script>
<TITLE>site title </TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<META content=IE=EmulateIE7 http-equiv=X-UA-Compatible>
<meta property="wb:webmaster" content="62560dac773ef282" />
<LINK rel=stylesheet type=text/css href="/img/100620/main.css"
media=screen>
<LINK
rel=stylesheet type=text/css href="/img/100715/2/dedecms.css" media=screen>
<STYLE type=text/css>
....
注意到它listen了DOMContentLoaded(可在代码中搜索DOMContentLoaded),也就是当DOM树加载完成,外联的CSS和JS还没载入的时候,它的代码开始执行大清洗。
大清洗的时候,它把原先的script标签给删掉了。可以在代码中搜索buildOriginalDOM函数。buildOriginalDOM函数里,注意到call了t.html.disable(n.headContent)、t.html.disable(n.bodyContent),
里面的disable方法就是在调用之处的前面一点点的位置定义的,干的事情也就是清洗掉原先的script标签。
于是它就重新建立了清洗完以后的DOM树,再继续加载页面。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。