2011-03-21 67 views
2

是否有任何技术在HTML呈现的同一时间渲染javascript文件?如何使用HTML同时加载Javascript

我的第一个想法是将它加载到<script>标记的头部,但正如我所见,这不会影响加载顺序,或者我错了?

问题是,在某些时候,我需要使用JavaScript来设置元素的宽度,当页面加载时,它真的很烦人的小振动是什么,因为JavaScript代码设置元素宽度后呈现在元素HTML。

回答

2

除非您设置了异步标志(在某些浏览器中),否则JS文件将阻止加载内容。所以你可以从它加载的那一刻起运行你的JS脚本。

尽管你看了CSS解决方案可能会更好。

支持异步代码:Which browsers support <script async="async" />?

4

使元素在HTML渲染为不可见,并有JavaScript的设置,那么宽度使其可见。

0

您可以在内联脚本块中使用document.write来输出元素的HTML,包括内联style。虽然它会很丑陋;你确定你无法避免整个事情吗?

编辑:一个更简洁的方法是document.write一个内联样式块,它在元素的HTML之前使用一个id选择器来设置元素的宽度;这将降低更好,但仍避免访问DOM它已经准备好之前,任何潜在的问题:

<script type="text/javascript"> 
    var width = ...; 
    document.write('<style type="text/css">#myid{width:' + width + 'px;}</style>'); 
</script> 
<div id="myid">...</div> 
1

是的,你可以用一个微小的加载器的JavaScript像JcorsLoader(仅647B用gzip)

JcorsLoader.load(
       "http://xxxx/jquery.min.js", 
       function() { 
        $("#demo").html("jQuery Loaded"); 
       }, 
       "http://xxxx/jquery.cookie.js", 
       function() { 
        $.cookie('not_existing'); 
       } 
      ); 

载倍数js并行并按顺序执行而不阻塞DOMReady或onload。

https://github.com/pablomoretti/jcors-loader

+0

出所有我测试过的插头,这实际上是一个它是什么所谓的姿势做。 yepnope和类似的都是废话 - 看起来,他们甚至没有为他们工作2年以上。对不起4挖,但我浪费测试这些插头周。 – CelticParser 2014-03-01 12:39:30

相关问题