【问题标题】:Does php load BEFORE the 'html body'?php 在“html 正文”之前加载吗?
【发布时间】:2009-11-24 19:47:14
【问题描述】:

这个问题很难解释,但我目前正在将 php 页面中的变量传递给一些 html 隐藏输入。

我使用 javascript 函数从隐藏的输入中获取这些值。这个函数是这样调用的:

 <body onload="function();">

它现在可以在我的系统上运行,但是从 php 传递的值是否有可能无法通过,因为 body 在 php 代码设置输入类型隐藏之前调用了该函数?

谢谢

【问题讨论】:

    标签: php javascript html


    【解决方案1】:

    可能混淆了哪个部分做什么。

    • PHP 在服务器端生成 HTML 页面。当 HTML 页面到达浏览器时,PHP 已经完成了它的工作。 PHP 在呈现 HTML 后无法执行任何操作。

    • Javascript 在用户的浏览器中 页面生成并加载后执行。 (或者在此期间;正如theraccoonbear 指出的那样,Javasript 可以在页面完全加载之前在浏览器中运行。)

    • Javascript 命令无法与渲染页面的 PHP 脚本通信,因为当 Javascript 发挥作用时,PHP 已经消失了。

    所以你的问题的答案是:不,JS 函数在 PHP 完成之前无法执行。 正如几位评论员指出的那样,这并不完全正确。 Javascript可以在输入 HTML 元素被渲染之前生效。但是,在您的示例中,Javascript 仅在文档​​完全加载时触发。在那个星座中,答案是否定的,这不可能发生。

    【讨论】:

    • Javascript 可以在页面完全加载/解析之前开始执行。如果不是,你如何解释几乎每个 JS 框架的 DOM 就绪功能?即 (jQuery) $(document).ready(function() { ... });
    • 他说 PHP 生成隐藏的输入,Javascript 从中读取。他似乎没有任何问题 - 只是想确认事情将始终按照他们在他的系统上执行的顺序运行,他们会这样做。
    • 实际上,在慢速连接的情况下,浏览器可以在页面完全渲染之前执行 onLoad 函数。为了防止这些,你真的需要一些像......好吧...... benlumley的答案。
    • 你有一些关于这个问题的读物吗?我一直认为,当整个页面所有资源都被加载时,onload 就会触发。有例外吗?
    【解决方案2】:

    这应该不是问题,因为您使用的是 body 的 onload 属性,这将确保 dom 和所有图像等都已加载。

    在我看来,像下面这样使用 jQuery 会更好,只要 dom 准备好就触发,而不是等待所有图像等。

    $(document).ready(function() {
        // do stuff here
    });
    

    如果需要,这也可以通过外部 JS 文件轻松完成,这有助于您在逻辑上分离代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      相关资源
      最近更新 更多