Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何与HTML同时加载Javascript_Javascript_Html_Load_Performance_Html Rendering - Fatal编程技术网

如何与HTML同时加载Javascript

如何与HTML同时加载Javascript,javascript,html,load,performance,html-rendering,Javascript,Html,Load,Performance,Html Rendering,是否有任何技术可以在HTML呈现的同时呈现javascript文件? 我的第一个想法是将它加载到标签中的头部,但正如我所见,这不会影响加载顺序,或者我是错的 问题是,有时我需要使用javascript在页面加载时设置元素的宽度,这真的让人恼火,因为javascript代码在元素以HTML呈现后设置元素的宽度。除非您设置了异步标志(在某些浏览器中)JS文件将阻止加载内容。因此,您可以从加载JS脚本的那一刻开始运行它 不过,如果您考虑CSS解决方案,可能会更好 支持异步标记:使元素在HTML中呈现为

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

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


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

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

不过,如果您考虑CSS解决方案,可能会更好


支持异步标记:

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

您可以使用
文档。在内联脚本块中写入
以输出元素的HTML,包括内联
样式。但这将是丑陋的;你确定你不能回避整件事吗

编辑:一种更简洁的方法是
文档。在元素的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>

变量宽度=。。。;
write('#myid{width:'+width+'px;}');
...

是的,您可以使用像JcorsLoader这样的小型javascript加载程序(只有647B和Gzip)

并行加载多个js并按顺序执行,而不阻塞DOMReady或onload


在我测试过的所有插头中,这一个实际上完成了它所要做的事情。yepnope和类似的东西都是垃圾——看,他们已经有2年多没做过了。对不起,我挖了4个,但我在测试这些插头上浪费了很多工作。
JcorsLoader.load(
                "http://xxxx/jquery.min.js",
                function() {
                    $("#demo").html("jQuery Loaded");
                },
                "http://xxxx/jquery.cookie.js",
                function() {  
                    $.cookie('not_existing'); 
                }
            );