2009-12-28 119 views
0

我不確定Chrome是如何特定的,但它是。這適用於所有其他瀏覽器,包括所有IE瀏覽器等。實際上,這裏沒有代碼是客戶特定的。所有這些都在服務器上生成。然而,清除瀏覽器的緩存上百萬次,並重新啓動它後...以下不工作:JavaScript問題與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 ==「富」未來的每一個瀏覽器,使用var正確顯示出來,它在查看source後顯示爲var somevar ='foo'; Chrome始終只顯示var somevar ='#'; ...不知道爲什麼。

我也拋出此成的JavaScript被嵌入在頁面:

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

和驗證$ someid確實FOO。然而第二個區塊只能在chrome上擊中。

更新:我注意到,當我右鍵點擊Chrome並點擊'Inspect Element'時,正確的var somevar值就在那裏。它僅在View Source中沒有正確設置。這真的很奇怪,考慮到如果在初始HTTP GET之後修改DOM,這是正常行爲,在這裏不是這種情況。沒有任何XHR或時髦的DHTML發生。只需一個HTTP GET,並且上面的代碼在該GET請求上處理。

+2

'$ someid'是如何設置的? – BalusC 2009-12-28 02:39:30

+0

應該甚至重要嗎?考慮到它是在服務器端設置的。爲什麼鉻護理? – randombits 2009-12-28 02:41:10

+1

在瀏覽器中生成的JS代碼是否正常?(如果你做查看頁面源代碼) – 2009-12-28 02:45:02

回答

2

無論出於何種原因,$ someid未設置或不完全等於「foo」。沒有人能說出爲什麼這可能發生在一個瀏覽器中,但除非你展示如何以及在哪裏設置變量,否則不會發生。也許有空間或其他看不見的角色,當你迴應它時仍然看起來像「foo」,但實際上不是「foo?」

0

因爲我想不出爲什麼它會是瀏覽器特定的,我會假設你正在做一些Chrome瀏覽器(點擊鏈接,提交表單等)來生成一個請求有問題的頁面,並且$someid的值以某種方式取決於請求參數。

如果$someid被直接設置的請求參數,檢查,以確保通過瀏覽器發送的值是真的只是「富」,而不是「富\ n」,「富\ 0」,「富」 ,或其他任何看起來像'富'的價值僅僅是人類。

如果必須,請打開HTTP流量嗅探器(Fidder是Windows的免費版本),並查看Chrome中會出現什麼內容。

1

要明確的問題,試試這個在HTML:

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

這將預格式化文本,以便你可以看到任何字符,包括空格。我敢打賭,參數值之後有一些空格,因此它會顯示如

"foo " 

並且這當然不等於「foo」。

如果這實際上是根本原因,我會建議優化您的請求參數處理的事情。您可能會發現trim()函數有價值。