我现在有这样的一个需求:我手里有一个JS文件,现在要插入到别人的网站中去,
 我的JS文件是实现了一个附加的额外功能,
就是说别人要在文件中添加一个script标签,来引用我的JS文件,就可以使用这个功能。我的JS文件中又加载了一些JS文件,而且还有对原来页面的操作,
在原来别人的页面中添加了一个DIV元素,在此DIV元素中嵌入一个iframe页面,
在此iframe页面中又嵌入了两个iframe页面
(iframe均没有内容,就是加载了一些JS文件而已,主要是利用页面的onload事件来触发脚本)
插入页原来运行还可以,但是加载JS以后特别慢,
后来我发现JS脚本都是在插入页的head部分加载的,所以就想问一问,
在浏览器加载页面的过程中,我知道是顺序加载的,
但是不确定的是:
如果head部分加载了一个非常大的JS文件或者CSS文件之类的,就是说在head部分内容没有加载完以前,
body部分会有显示吗???如果我把自己加载大量内容的代码等到别人的插入页加载完之后再加载,会影响插入页加载吗???
我的意思是:有一部分内容(HTML\JS\CSS代码)不是页面显示的时候必须的,
我把它放到插入页的onload事件之后再执行,能实现原来的页面加载速度影响不太大,
而我的代码在后面慢慢加载吗???
不知道我说清楚没有???
希望高手解决一下!!!
希望看到此贴的朋友都能提供一个思路,
就是说一个普通的页面插入一段JS代码就能实现一个特殊的小功能,
此功能不是那个页面必须的,由于这个JS文件和它要加载的文件比较大,
怎样才能实现,既把这个功能添上又不能太影响原来的页面的加载。

解决方案 »

  1.   

    这个问题我也碰到过,忘了在哪里看到了,大意是说通过script标签引入JS代码最好是放在body之后。因为如果JS过大,浏览器也必须等等JS加载完成后才继续加载后面的内容。而把script标签放在body之后的话,当body的内容加载完成后就可以马上展现可以看到的内容了,就不用等待JS的加载了
      

  2.   

    在页面上事先写一个元素,DIV或者span什么的放在你希望的地方并给它一个ID在页面最下方载入JS并把ID传过去
    或者在要载入的地方先写一个<script>
    里面放一个函数,setTimeout 判断页面是否加载完了,除了图片等异步加载的外。如果是就在这个<script>的后面创建一个<script src='你的文件'>
      

  3.   

    在body的最后加你的JS 参考统计JS的加法 都是加在</body>前面 
    这样页面肯定全加载完了
      

  4.   

    在 </body>前面?还需要使用defer属性吗?
      

  5.   

    我看下来你的目的 就是 希望把一个功能用JS封装起来 且该功能是扩展但不影响页面 自加载自运行所以这样的JS位置放在 </body>前就可以了 加载时机完全应该是JS自己控制的 不能让调用的人来考虑这个
    所以 一般是2段JS脚本 1是封装的功能 2是控制加载功能JS的脚本 页面放置2 脚本就可以了至于 是否defer定义就向前面说的 这样的自我扩展的功能 不要让调用者考虑加载时机 要避免未知耦合
      

  6.   

    那么假设我有两段JS脚本,脚本1和脚本2.
    脚本1的功能就是把脚本2插入到</body>前面。
    假设我把脚本1放到head部分了,那到执行脚本1的时候就会把
    脚本2插入到</body>前面。
    我想问的是:
    这时候脚本2会执行吗?
    还是仅仅像平时静态的script标签一样
    等到body部分执行完才执行???