2013-11-14 2 views
3

사용자가 캡 티브 포털을 사용하여 Wi-Fi 네트워크에 성공적으로 로그온 한 직후에 표시되는 웹 애플리케이션을 실행 중입니다.iOS 캡쳐 된 네트워크 길잡이 웹 페이지의 자바 스크립트 감지

iOS의 경우 사용자가 로그인하면 내 웹 앱이 CNA (Captive Network Assistant) 팝업에 표시되고 오른쪽 상단 버튼 레이블이 "확인"되어 사용자가이 팝업을 닫을 수 있습니다.

이 CNA 팝업 안에 표시 될 때 내 webapp에 특정 동작이 나타나기를 원하므로 내 webapp가 그러한 팝업에 표시되면 자바 스크립트로 감지하려고합니다.

사파리 내부 높이
  • 460px 높이 사파리
  • 내부
  • 440px 공유 연결 또는 전화
  • 459px 높이 동안 :

    나는 window.innerHeight 값에하지만 내 아이폰을 처음 내기 5는 어려운 것 같다 캡 티브 네트워크 지원자 내부

  • 공유 연결 또는 전화 통화 중에 캡 티브 네트워크 어시스턴트 내부의 높이 433px

1px 차이점은 내 CNA 팝업에 있는지를 판단하기에 충분하지 않습니다.

내가 팝업과 같은지 확인하려면 다른 자바 스크립트 정보가 있습니까?

마침내 나는 사용자 에이전트와 함께 CNA를 감지하면

답변

7

음을 감사드립니다. CNA 내부에서 사용자 에이전트는 UA 문자열에 "Safari /"를 포함하지 않습니다. 는 또한 예를 들어 사파리 UA 문자열 ... 오페라 미니, 돌고래, 수성, 바다 앵무, 원자, 360 라이트와 같은 다른 브라우저 다스와

을 테스트하는 것은 : 같은 장치에

Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25 

, CNA 내부 사용자 에이전트 문자열은 다음과 같습니다

$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']); 

if ((strpos($userAgent, 'iphone') || strpos($userAgent, 'ipad')) && 
    (strpos($userAgent, 'mozilla/') !== false) && 
    (strpos($userAgent, 'applewebkit/') !== false) && 
    (strpos($userAgent, 'mobile/') !== false) && 
    (strpos($userAgent, 'safari') === false)) 
{ 
    // Yes, we are in a CNA popup 
    [...] 
} 
:

Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d 

그래서 PHP 내 감지처럼 보인다