Chrome ile JavaScript sorunu

3 Cevap php

Ben bu özel Chrome nasıl emin değilim, ama öyle. Bu gerçeği, hiçbir kod belirli bir müşteri burada var vs tüm IE * tarayıcılar dahil olmak üzere, diğer her tarayıcıda çalışıyor. Tüm bu sunucu üzerinde üretiliyor. Henüz bir milyon kez Chrome'un önbelleğini temizlemeyi ve yeniden başlattıktan sonra ... şu çalışmıyor:

<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 itibaren == 'foo' geliyor her tarayıcıda, düzgün var, bu var SomeVar = 'foo' olarak kaynağını görüntüleyerek sonra çıkageldi gösterir; Neden ... emin değilim; Chrome sürekli sadece var SomeVar = '#' gösteriyor.

Ben de javascript üzerinde gömülü olan bu sayfanın içine attı:

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

ve $ someid foo gerçekten olduğunu doğrular. Henüz ikinci else bloğu yalnızca krom üzerine, vurur.

GÜNCELLEME: Ben doğru 'Eleman inceleyin' Chrome tıklayın ve vurduğunuzda, DOĞRU var SomeVar değer olduğunu fark. Bu doğru ayarlanmış değil sadece Görünümü Kaynak bulunuyor. Yani burada durum böyle değil ilk HTTP GET, sonra DOM değiştirirseniz eğer normal bir davranış olduğunu düşünüyor, gerçekten çok tuhaf. Oluyor herhangi XHR ya da korkak DHTML yoktur. Sadece bir HTTP GET ve yukarıdaki kodu, GET isteği üzerine işlenir.

3 Cevap

Sebebi ne olursa olsun, $ someid ayarlı değil veya tam olarak eşit değildir ya "foo." Nasıl ve nerede bu değişken set alır göstermek sürece o bir tarayıcıda olur ama başka bir olabilir neden hiç kimse söyleyemez. Belki de bunu echo hala "foo" gibi görünen bir boşluk veya diğer görünmez bir karakter, ama aslında değil "foo?"

Sorunu çivilemek, HTML bu deneyin:

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

Eğer boşluklar da dahil herhangi bir karakter, görebilirsiniz böylece bu metni preformat olacaktır. Ben gibi görüntüler böylece bazı boşluk parametre değeri sonra orada bahis

"foo "

ve bu "foo" eşit değil tabii ki.

Bu aslında kök nedeni ise, ben sizin istek parametre işleme şeyi optimize tavsiye ediyorum. Sen trim() function değerli bulabilir.

Ben tarayıcı belli olur başka neden düşünemiyorum beri, ben, söz konusu sayfanın bir isteği oluşturmak için Chrome'da bir şey (bir bağlantıyı tıklayarak, bir form göndererek, vb) yapıyoruz kabul edeceğim ve değeri $someid nasılsa istek parametrelerine bağlıdır.

$someid bir istek parametresi doğrudan ayarlı ise, Chrome tarafından gönderilen değer really just 'foo' ve 'foo \ n', 'foo \ 0 olduğundan emin olmak için kontrol edin ',' foo 'ya benzeyen başka bir değer' bize sadece insanlara foo '.

Eğer, bir HTTP trafik dinleyicisi (Fidder Windows için harika bir ücretsiz biridir) patlak ve Chrome üzerinden geliyor ne bakmak zorunda.