双脚本标签中的任何值?

时间:2009-03-27 21:08:38

标签: javascript html

我在几段代码中看到了这一点,我不想“假设”它不重要但是这是Google Analytics代码的副本:

<script type="text/javascript">
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
    try {
        var pageTracker = _gat._getTracker("UA-xxxxxx");
        pageTracker._trackPageview();
    } catch(err) {}
</script>

您会注意到有两个打开/关闭脚本标记。是否有任何理由将两个不同的脚本标签中的代码位封装是有益的?我的第一反应就是删除冗余。

4 个答案:

答案 0 :(得分:5)

第一个块将<script>标记写入页面。我认为如果代码全部在一个块中,则无法保证在执行代码的第二部分之前将加载写入的<script>

通过使用两个块,写入的<script>将在第二个块执行之前加载(包含_gat对象)。

答案 1 :(得分:0)

我猜这两个脚本块是由不同的源模块(类/对象/其他)创建的。

答案 2 :(得分:0)

页面有两个脚本标签的最可能原因是因为系统的两个独立模块都希望向页面添加javascript功能,但是希望确保它干净地插入自身。

如果他们将页面创作为单个静态页面,则一个脚本标记就可以了。由于页面可能是动态生成的,所以不必担心。

答案 3 :(得分:0)

如果第一个脚本标记中发生错误,则第二个脚本标记仍将执行。

但是,如果第二个依赖于第一个(例如,如果它使用第一个中定义的函数),它可能仍然失败。 (因为第一个没有完全执行)