我不确定这是特定于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显示正确,它在查看source后显示为var somevar ='foo'; Chrome始终只显示var somevar ='#'; ...不确定原因。
我还把它扔进了嵌入javascript的页面:
<?php
echo "someid: {$someid}\n";
?>
并验证$ someid确实是foo。然而第二个其他阻止命中,仅在chrome上。
更新:我注意到当我右击Chrome并点击'Inspect Element'时,CORRECT var somevar值就在那里。仅在View Source中,它没有正确设置。这真的很奇怪,考虑到在初始HTTP GET之后修改DOM的正常行为,这不是这里的情况。没有任何XHR或时髦的DHTML发生。只是一个HTTP GET,上面的代码就是在GET请求上处理的。
答案 0 :(得分:2)
无论出于何种原因,$ someid要么未设置,要么不完全等于“foo”。除非你展示设置变量的方式和位置,否则没有人能说出为什么会在一个浏览器中发生,而不是另一个浏览器。也许有一个空间或其他看不见的角色,当你回应它时仍然看起来像“foo”,但实际上并不是“foo?”
答案 1 :(得分:1)
要确定问题,请在HTML中尝试:
echo '<pre>"' . $someid . '"</pre>';
这将预先格式化文本,以便您可以看到任何字符,包括空格。我打赌在参数值之后有一些空格,以便它显示为
"foo "
这当然不等于“foo”。
如果这实际上是根本原因,我建议优化您的请求参数处理事物。您可能会发现trim()
函数很有价值。
答案 2 :(得分:0)
由于我无法想到为什么它会特定于浏览器,我会假设你在Chrome中做某事(点击链接,提交表单等)以生成对页面的请求问题是,$someid
的值以某种方式取决于请求参数。
如果$someid
直接由请求参数设置,请检查以确保Chrome发送的值真的只是'foo'而不是'foo \ n',' foo \ 0','foo',或者对我们来说只是'foo'的任何其他价值仅仅是人类。
如果必须,请打破HTTP流量嗅探器(Fidder对于Windows来说是一个非常好的免费嗅探器)并查看Chrome中的内容。