AngularJs에서 인터넷 연결을 확인하는 방법
바닐라 자바스크립트로 인터넷 연결을 확인하는 방법은 다음과 같습니다.
setInterval(function(){
if(navigator.onLine){
$("body").html("Connected.");
}else{
$("body").html("Not connected.");
}
},1000);
프로젝트에는 각도 컨트롤러와 모듈이 있습니다.위 코드는 어디에 넣어야 하나요?특정 컨트롤러에 할당하지 않고 글로벌콘텍스트에서 실행해야 합니다.글로벌 컨트롤러 같은 게 있을까요?
앵가르에서는 이렇게 할 수 있다.JS:
var app = module('yourApp', []);
app.run(function($window, $rootScope) {
$rootScope.online = navigator.onLine;
$window.addEventListener("offline", function() {
$rootScope.$apply(function() {
$rootScope.online = false;
});
}, false);
$window.addEventListener("online", function() {
$rootScope.$apply(function() {
$rootScope.online = true;
});
}, false);
});
메모: 루트 스코프의 변수 변경에 대해 설명하겠습니다.$apply변경되었음을 Angular에게 통지하는 방법.
그 후 다음 작업을 수행할 수 있습니다.
컨트롤러 내:
$scope.$watch('online', function(newStatus) { ... });
HTML 마크업:
<div ng-show="online">You're online</div>
<div ng-hide="online">You're offline</div>
여기 동작하는 Pluker가 있습니다.http://plnkr.co/edit/Q3LkiI7Cj4RWBNRLEJUA?p=preview
온라인/오프라인 이벤트를 브로드캐스트하는 방법도 있습니다.그러나 이 경우 로드 시 현재 상태를 초기화하고 이벤트에 등록해야 합니다.
확실히 좋은 것은 아니지만 웹 서버에 대한 AJAX 요청을 시도하면 성공하거나 타임아웃할 수 있습니다.
또한 HubSpot/offline 프로젝트는 매우 좋아 보입니다.
옵션:
창, 문서 또는 document.body에서 addEventListener를 선택합니다.
문서의 .online 또는 .online 속성을 설정합니다.
문서.JavaScript Function 개체로 바디를 지정합니다.HTML 마크업의 태그에 on-line="..." 또는 on-offline="..." 속성을 지정합니다.
가장 쉬운 걸 보여드릴게요.
인유 컨트롤러
document.body.onoffline = function() {
alert('You are offline now');
$scope.connection = 'offline'
}
document.body.ononline = function() {
alert('You are online again');
$scope.connection = 'online'
}
요청을 전송하기 전에 $scope.connection 변수를 확인하십시오.
Angular 2+의 경우 ng-speed-test를 사용할 수 있습니다.
- 설치만 하면 됩니다.
npm install ng-speed-test --save
- 모듈에 주입:
import { SpeedTestModule } from 'ng-speed-test';
@NgModule({
...
imports: [
SpeedTestModule,
...
],
...
})
export class AppModule {}
- 서비스를 사용하여 속도 향상:
import {SpeedTestService} from 'ng-speed-test';
@Injectable()
export class TechCheckService {
constructor(
private speedTestService:SpeedTestService
) {
this.speedTestService.getMbps().subscribe(
(speed) => {
console.log('Your speed is ' + speed);
}
);
}
}
언급URL : https://stackoverflow.com/questions/16242389/how-to-check-internet-connection-in-angularjs
'programing' 카테고리의 다른 글
| 플럭스 베스트 프랙티스:디스패치 액션, AJAX 콜을 Web API Utils에 저장합니다. (0) | 2023.04.05 |
|---|---|
| 치명적 오류: /public_html/wp-includes/load의 정의되지 않은 함수 apply_filters()를 호출합니다.317행의 php (0) | 2023.04.05 |
| Application Runner 및 Runner 인터페이스가 필요한 시기와 이유는 무엇입니까? (0) | 2023.04.05 |
| Spring Webflux, 정적 콘텐츠를 제공하기 위해 index.html로 전송하는 방법 (0) | 2023.04.05 |
| 오브젝트 어레이를 JSON 경유로 ASP에 투고합니다.넷 MVC3 (0) | 2023.04.05 |