源代码中的JavaScript代码不反映实际执行的代码

Jef*_*eff -1 javascript php jquery session-variables

我的javascript代码看起来像它应该的那样工作.但是,当我在Chrome中查看"来源"时,它不同意实际执行的javascript.

这是我的代码:

<?php
    $_SESSION['new'] = "blue";
    if (!isset($_SESSION['old'])) { $_SESSION['old'] = "blue"; }
        echo '<script type="text/javascript">
            $(document).ready(function() {
                changeCol("'.$_SESSION["old"].'","'.$_SESSION["new"].'");
            });
          </script>';
    $_SESSION['old'] = "blue";
?>    
Run Code Online (Sandbox Code Playgroud)

$_SESSION['old']="green"来自上一页.代码应该调用changeCol("green","blue"),然后设置$_SESSION['old']="blue".

事实上,这两件事都发生了,所以我的代码就像它的设计一样工作,如果我查看源代码,它会说changeCol("blue","blue").这很奇怪,因为如果在changeCol()中我将传递的变量写入console.log,我得到green, blue.

所以如果它在调用changeCol(green,blue)为什么它changeCol(blue,blue)在我查看源代码时会说?

Wal*_*han 12

当您查看源时,您可能正在提出其他请求.您的会话变量将被重置.

如果您使用的是Chrome或Firefox(您应该使用它),您可以打开Web Developer Tools或Firebug并检查实际的DOM树.(这在脚本动态添加内容的情况下也非常有用.)

  • 谷歌的某个人需要被解雇.查看源代码不应该发出新请求,至少在没有使用制裁的情况下是这样,否则您获得的源不是您正在查看的页面源的真正危险.OP的问题就是一个例子,就像动态内容快速变化的任何事情一样,例如新闻或股票价格网站. (4认同)
  • 似乎是铬的一个已知问题http://code.google.com/p/chromium/issues/detail?id=523 (2认同)
  • @ Beetroot-Beetroot:当前行为(一旦你知道它)对开发人员调试内容不断变化的页面实际上很有用.您无需刷新页面并查看源,刷新和查看源,刷新和查看源...您只需刷新源视图即可.通过按下F5,帮助我有很多时间来发现源中发生变化的位.注意,chrome将视图源实现为协议,它是`view-source:some_uri`而不是`http:// some_url`.因此,您可以直接转到源而无需呈现页面. (2认同)