将 PHP 变量发送到 JavaScript.<脚本>标记的位置


Sending PHP variables to JavaScript. Position of <script> tags?

我尝试搜索,但找不到这个答案,因为它有点具体。

在标头.php(即网站的标头)中,包含了一些脚本以使jQuery正常工作。除此之外,还有工作脚本.js,以及我的书面脚本。它的设置是这样的:

<script type="text/javascript" src="<?=TEMPLATE?>js/workscripts.js"></script>
<script type="text/javascript"> var query = "<?=$_SERVER['QUERY_STRING']?>";</script>

在文件workscripts.js中,有一个功能可以在单击链接时切换cookie。在这里:

$(document).ready(function(){
    /* View switch*/
    $(document).ready(function(){
        if($.cookie("display") == null){
            $.cookie("display", "grid");
        }
        $(".grid_list").click(function(){
            var display = $(this).attr("id");
            display = (display == "grid") ? "grid" : "list";
            if(display == $.cookie("display")){
                //if the button is the same as the cookie
                return false;
            }else{
                //if the button is different
                $.cookie("display", display);
                window.location = "?" + query;
                return false;
            }
        });
    });
    /* View switch*/
});

它在视图之间切换,并基本上将其设置为cookie
一切正常,我问你的问题是:如果workscripts.js在代码中首先,然后在它之后设置变量,为什么这会起作用?JavaScript 是否作为一个整体工作,在哪里添加<script></script>并不重要?据我了解,<script>的定位应该是相反的,首先我们设置一个变量查询并发送它,然后我们包括workscripts.js
另一个问题:为什么我们不能直接在包含workscripts.js的地方添加变量查询?如果我们在代码中包含 JavaScript 文件,我们就不能在标签之间写入任何东西吗?

在文档

就绪事件触发之前,workscripts.js中的代码不会尝试访问变量。

在解析完所有 HTML 之前,这不会触发,因此所有脚本元素都将被解析并执行它们的脚本(尽管不一定是它们的所有函数)。


为什么我们不能直接在包含工作脚本的地方添加变量查询.js?如果我们在代码中包含 JavaScript 文件,我们就不能在标签之间写入任何东西吗?

脚本元素只能加载单个脚本。如果它具有 src 属性,它将从 URL 加载它。如果它没有脚本元素,它将从内联加载它。