JavaScript的document.write内联脚本执行顺序 [英] JavaScript's document.write Inline Script Execution Order

查看:370
本文介绍了JavaScript的document.write内联脚本执行顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下脚本,其中第一个和第三个 document.writeline 是静态的,第二个是

 < script language =javascripttype =text / javascript> 
document.write(< script language ='javascript'type ='text / javascript'src ='before.js'>< \ / sc+ript>);
document.write(< script language ='javascript'type ='text / javascript'> alert('during');< \ / sc+ript>);
document.write(< script language ='javascript'type ='text / javascript'src ='after.js'>< \ / sc+ript>);
< / script>

Firefox和Chrome将在之前显示 >和之后之后,Internet Explorer会先显示,然后 之前显示 p>

我遇到了一篇文章



有没有人知道我可以怎么做?在所有浏览器中将顺序设置为确定性,或者使用IE浏览器像所有其他浏览器一样工作?



注意事项:代码片段是一个非常简单的重现。它是在服务器上生成的,第二个脚本是唯一的变化。它是一个长脚本,原因有两个脚本之前和之后,它使浏览器将缓存它们和动态部分的代码将尽可能小。

解决方案

我已经找到一个答案更多的我的喜好:

 < script language =javascripttype =text / javascript> 
document.write(< script language ='javascript'type ='text / javascript'src ='before.js'>< \ / sc+ript>);
document.write(< script defer language ='javascript'type ='text / javascript'> alert('during');< \ / sc+ript>);
document.write(< script defer language ='javascript'type ='text / javascript'src ='after.js'>< \ / sc+ript>);
< / script>

这会延迟 / em>,直到页面完成加载。



我认为这是我能得到的。希望有人能够给出更好的答案。


I have the following script, where the first and third document.writeline are static and the second is generated:

<script language="javascript" type="text/javascript">
document.write("<script language='javascript' type='text/javascript' src='before.js'><\/sc" + "ript>");
document.write("<script language='javascript' type='text/javascript'>alert('during');<\/sc" + "ript>");
document.write("<script language='javascript' type='text/javascript' src='after.js'><\/sc" + "ript>");
</script>

Firefox and Chrome will display before, during and after, while Internet Explorer first shows during and only then does it show before and after.

I've come across an article that states that I'm not the first to encounter this, but that hardly makes me feel any better.

Does anyone know how I can set the order to be deterministic in all browsers, or hack IE to work like all the other, sane browsers do?

Caveats: The code snippet is a very simple repro. It is generated on the server and the second script is the only thing that changes. It's a long script and the reason there are two scripts before and after it are so that the browser will cache them and the dynamic part of the code will be as small as possible. It may also appears many times in the same page with different generated code.

解决方案

I've found an answer more to my liking:

<script language="javascript" type="text/javascript">
document.write("<script language='javascript' type='text/javascript' src='before.js'><\/sc" + "ript>");
document.write("<script defer language='javascript' type='text/javascript'>alert('during');<\/sc" + "ript>");
document.write("<script defer language='javascript' type='text/javascript' src='after.js'><\/sc" + "ript>");
</script>

This will defer the loading of both during and after until the page has finished loading.

I think this is as good as I can get. Hopefully, someone will be able to give a better answer.

这篇关于JavaScript的document.write内联脚本执行顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆