2016-12-10 3 views
0

나는 cordova를 사용하고 사이트 (원격 코드가 아닌 코드 파일 앱 프로젝트)를 일반 브라우저 및 특정 앱에 내 휴대 전화에 설치합니다.Cordova : 기기 앱에서 페이지가 열렸는지 여부를 판단합니다.

이제는 페이지가 앱 내부에서 열리면 코드바 스크립트를 도입해야하지만 일반 브라우저에서 열면 코드화 스크립트가 발생하지 않아야합니다.

페이지가 앱 내부에서 열려 있는지 여부를 알 수있는 방법이 있는지 궁금합니다. 나는 두 경우에 UserAgent 스파이

if (isApp()) { 
    document.addEventListener('deviceready',() => { 
     bootstrap(); 
    } 
} else { 
    bootstrap(); 
} 

, 거기에 어떤 중요한 정보가없는 것 같았다.

아니면 UserAgent 코드바 프로젝트에 정보를 추가 할 수 있습니까? 앱이는 코르도바 환경 (예. cordova.js이 페이지에 포함되어 있습니다)

답변

0

/config.xml에 다음 줄을 추가로 실행되는 경우가 window.cordova을 테스트 할 수 있습니다

0

확인합니다.

은 참조 : 우리는의 이벤트 cordova.js를 도입할지 여부를 결정할 수 있습니다

function isApp() { 
    return /Cordova/.test(windows.navigator.userAgent); 
} 

: http://cordova.apache.org/docs/en/dev/config_ref/index.html#Android%20Configuration

<preference name="AppendUserAgent" value="Cordova" /> 

그런 다음, 우리가 판단하는 아주 초기 시간에 follwing을 조건을 사용할 수 있습니다

let cordovaReady = null; 

if (/Cordova/.test(window.navigator.userAgent)) { 
    cordovaReady = new Promise((resolve, reject) => { 
    const script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = '/cordova/cordova.js'; 
    script.onload =() => { 
     document.addEventListener('deviceready',() => { 
     resolve(); 
     }, false); 
    }; 
    document.body.appendChild(script); 
    }); 
} else { 
    cordovaReady = Promise.reject(); 
} 

// We got cordovaReady as a Promise that tells both `inApp()` and `deviceready`. 
cordovaReady.then(() => { // done 
    // windows.cordova is available 
},() => { // fail 
    // windows.cordova is undefined 
    console.log('The page is not open under Cordova App.'); 
}).then(() => { // always 
    // launch your app 
    bootstrap(); 
}); 
+0

나는 그 전에 'cordova.js'를 소개할지 여부를 알고 싶다. –