在开始<html>标签


Setting JavaScript variables before the opening <html> tag

我有几个PHP变量,我需要转移到JavaScript。目前,我的大部分PHP代码在页面加载后立即执行,在打开-html-标记之前执行。如果我使用echo在标签之前创建javascript变量,它们会被正确存储吗?有什么理由让我不想这么做吗?

在开始HTML标记之前分配JS变量可能没有任何问题,但如果不这样做,则使用的是一些真正不符合标准的浏览器。: -)

一般规则是,您在页面上定义的所有内容都应该在<head><body>中。其他所有内容都应该被视为错误,因为它没有定义行为。未定义的行为导致坏事。

如果你把它作为第一件事在<head>,你应该很好,虽然

您应该将变量保存在内存中,直到<script>标记在HTML标记中输出:

<?php
    ...
    // I want to transfer: $my_var
?>
...
<html>
    <head>
        <script>
            var php_var = <?php echo json_encode($my_var); ?>;
        </script>
        ...
    </head>
    <body>
        ...
    </body>
</html>

使用echo在html标记内的脚本标记内创建变量。你有什么问题?