2

是否有任何技术可以在呈现 HTML 的同时呈现 javascript 文件?

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

问题是,有时我需要在页面加载时使用 javascript 来设置元素的宽度,这真的很烦人,因为在 HTML 中呈现元素后设置元素宽度的 javascript 代码。

4

4 回答 4

4

使元素在 HTML 中呈现为不可见,并让 Javascript 设置宽度然后使其可见。

于 2011-03-21T12:34:59.343 回答
2

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

如果您查看 CSS 解决方案可能会更好。

支持异步标签:哪些浏览器支持 <script async="async" />?

于 2011-03-21T12:33:09.893 回答
1

是的,您可以使用 JcorsLoader 之类的小型加载程序 javascript(Gzip 仅 647B)

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

于 2012-10-11T00:44:34.180 回答
0

您可以document.write在 inline 脚本块中使用来输出元素的 HTML,包括 inline 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>
于 2011-03-21T12:36:25.730 回答