2009-12-28 4 views
0

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 == '갑'에서오고 모든 단일 브라우저에서 VAR는, 그것을 제대로 보여줍니다 var somevar = 'foo'와 같이 소스를 본 후에 나타난다; Chrome은 일관되게 var somevar = '#'을 보여줍니다.

나는 또한 자바 스크립트에 포함되고있는 페이지에이를 던졌다 :

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

그것은 $의 someid 실제로 foo는 것을 확인합니다. 두 번째 else 블록은 크롬에서만 히트합니다.

업데이트 : Chrome에서 마우스 오른쪽 버튼을 클릭하고 '요소 검사'를 클릭하면 올바른 var somevar 값이 있음을 알았습니다. 보기 소스에서만 올바르게 설정되지 않았습니다. 초기 HTTP GET 이후에 DOM을 수정하면 정상적인 동작으로 간주되어 정말 이상합니다. 여기서는 그렇지 않습니다. XHR이나 펑키 한 DHTML은 일어나지 않습니다. 그냥 HTTP GET, 위의 코드는 GET 요청에 따라 처리됩니다.

+2

'$ someid '는 실제로 어떻게 설정 되었습니까? – BalusC

+0

해도 상관 없습니까? 그것이 서버 측에 설정되어 있다고 생각하면됩니다. 크롬은 왜 신경을 쓰나요? – randombits

+1

생성 된 JS 코드가 브라우저에서 제대로 보이나요?(페이지 소스보기를 사용하는 경우) –

답변

2

어떤 이유로 든, $ someid는 "foo"로 설정되지 않았거나 정확히 같지 않습니다. 변수가 설정되는 방법과 위치를 표시하지 않는 한 브라우저에서 발생할 수있는 이유는 아무도 말할 수 없습니다. 어쩌면 "foo"처럼 보이지만 실제로는 "foo"가 아닌 공백이나 다른 보이지 않는 문자가있을 수 있습니다.

0

브라우저가 다른 이유가 무엇인지 생각할 수 없기 때문에 Chrome에 대한 요청 (링크를 클릭하고 양식을 제출하는 등)을 수행한다고 가정합니다. 페이지의 값은 $someid이며 요청 매개 변수에 따라 달라집니다. $someid이 요청 매개 변수에 의해 직접 설정되는

경우, 크롬에서 보낸 값이 '갑', 정말 '갑'이 아니라 'foo는 \ n을', 'foo는 \ 0'이 있는지 확인하려면 확인 , 또는 우리에게 단순한 인간에게 'foo'처럼 보이는 다른 어떤 값이든.

필요한 경우 HTTP 트래픽 스니퍼 (Windows의 경우 무료 Fidder)를 찾아서 Chrome에서 무엇이 나오는지 확인합니다.

1

문제를 꼼짝 못하게하려면 HTML이 시도 : 당신이 공백을 포함한 모든 문자를 볼 수 있도록

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

이 텍스트를 사전 형식화됩니다. 나는

"foo " 

같이 표시됩니다 이것은 물론 "foo는"동일하지 수 있도록 매개 변수 값 이후에 일부 공간이 내기.

실제로 이것이 근본 원인 인 경우 요청 매개 변수 처리 작업을 최적화하는 것이 좋습니다. trim() 기능이 유용 할 수 있습니다.