【问题标题】:JavaScript issue with ChromeChrome 的 JavaScript 问题
【发布时间】:2010-12-30 09:06:19
【问题描述】:

我不确定这是 Chrome 特有的,但确实如此。这适用于所有其他浏览器,包括所有 IE* 浏览器等。事实上,这里没有特定于客户端的代码。所有这些都是在服务器上生成的。然而,在清除 Chrome 的缓存一百万次并重新启动它之后......以下不起作用:

<script type="text/javascript">

// BEGIN PARAMETERS 
<?php 
    if (isset($someid) && $someid == 'foo') {
        echo "var somevar = 'foo';\n";
    } else {
        echo "var somevar = '#';\n";
    }
?>
var invisible = '#';
var text_counter = '#';
// END PARAMETERS 
</script>

在来自 $someid == 'foo' 的每个浏览器上,var 都会正确显示,它在查看源代码后显示为 var somevar = 'foo'; Chrome 始终只显示 var somevar='#';... 不知道为什么。

我还把它扔到了嵌入 javascript 的页面中:

<?php
  echo "someid: {$someid}\n";
?>

这验证了 $someid 确实是 foo。然而第二个 else 块命中,仅在 chrome 上。

更新:我注意到当我右键单击 Chrome 并点击“检查元素”时,CORRECT var somevar 值就在那里。只有在查看源代码中设置不正确。这真的很奇怪,考虑到如果您在初始 HTTP GET 之后修改 DOM 是正常行为,这里不是这种情况。没有任何 XHR 或时髦的 DHTML 发生。只是一个 HTTP GET,上面的代码是根据那个 GET 请求处理的。

【问题讨论】:

  • $someid 实际上是如何设置的?
  • 这还重要吗?考虑到它是在服务器端设置的。为什么铬在乎?
  • 生成的 JS 代码在浏览器中看起来没问题吗? (如果您查看页面源代码)
  • 生成的JS代码在浏览器中看起来很好,除了上面提到的问题。语法上一切都很好。
  • 你能给我们粘贴一个关于错误的工作示例吗?如果您能给我们减价,那将有助于我们帮助您解决这个问题。

标签: php javascript google-chrome


【解决方案1】:

无论出于何种原因,$someid 要么未设置,要么不完全等于“foo”。除非您说明该变量的设置方式和位置,否则没有人能说出为什么会在一个浏览器中发生这种情况,而在另一种浏览器中则不会。也许有一个空格或其他不可见的字符,当你回显它时仍然看起来像“foo”,但实际上不是“foo”?

【讨论】:

    【解决方案2】:

    要确定问题,请在 HTML 中尝试:

    echo '<pre>"' . $someid . '"</pre>';
    

    这将预先格式化文本,以便您可以看到任何字符,包括空格。我敢打赌参数值后面有一些空格,所以它会显示为

    "foo "
    

    这当然不等于“foo”。

    如果这实际上是根本原因,我建议优化您的请求参数处理。您可能会发现 trim() 函数很有价值。

    【讨论】:

      【解决方案3】:

      由于我想不出为什么它会是特定于浏览器的,我将假设您正在 Chrome 中执行某些操作(单击链接、提交表单等)以生成对页面的请求有问题,$someid 的值取决于请求参数。

      如果 $someid 是由请求参数直接设置的,请检查以确保 Chrome 发送的值真的只是 'foo' 而不是 'foo\n', 'foo\ 0'、'foo' 或任何其他对我们人类来说看起来像 'foo' 的值。

      如果必须,请打开一个 HTTP 流量嗅探器(Fidder 是 Windows 上一个很棒的免费嗅探器),然后查看 Chrome 中的内容。

      【讨论】:

        猜你喜欢
        • 2011-09-10
        • 2013-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多