자바 스 크 립 트 가 각 브 라 우 저 에서 실행 되 는 내성
7794 단어 JavaScript브 라 우 저참을성
웹 개발 을 할 때 자주 발생 하 는 상황 중 하 나 는 브 라 우 저 알림 스 크 립 트 가 너무 오래 실행 되 고 중단 되 거나 계속 되 는 것 입 니 다.무엇 을 선택 하 든 이 대화 상 자 를 사용자 들 과 멀리 할 수 있 도록 최선 을 다 할 것 이 라 고 믿 습 니 다.그러나 이 서로 다른 브 라 우 저 들 이 어떤 스 크 립 트 가'제어 불 능'상태 에 있 는 지 아 십 니까?본 고 는 인터넷 익스플로러,Firefox,Safari,Chrome,Opera 등 다섯 가지 브 라 우 저 에서 이 상황 이 발생 하 는 원인 을 분석 했다.
[원문 제목]What determines that a script is long-running?[원문 작성 자]Nicholas C. Zakas
다음은 원문 에 대한 번역 이다.
웹 개발 자 들 이 자주 만 나 고 제때에 처리 해 야 하 는 문 제 는'스 크 립 트 가 너무 오래 실행 되 었 음 을 알려 주 는 알림 상자'(또는'제어 할 수 없 는 스 크 립 트 알림')입 니 다.이 얄 미 운 대화 상 자 는 스 크 립 트 가 너무 오래 실 행 될 때 나타 납 니 다.웹 개발 자 에 대한 기본 준칙 은 언제든지 사용자 에 게 이 대화 상 자 를 보 여주 지 말 라 는 것 입 니 다.코드 가 구조 화 되 지 않 은 인상 을 줄 수 있 기 때 문 입 니 다.더 쉽게 말 하면 코드 부담 이 너무 큽 니 다.
Brendan Eich(JavaScript 의 발명자)로 말 하면 JavaScript 가 실행 되 는 시간 을 초 로 계산 해 야 한다 면 뭔 가 잘못 되 었 을 것 이다.저 는 개인 적 으로 참 을 수 있 는 상한 선 이 더 작 을 수 있 습 니 다.어떤 스 크 립 트 든 그 어떠한 시간,브 라 우 저 에서 도 100 밀리초 를 초과 해 서 는 안 됩 니 다.실제 실행 시간 이 이 한계 보다 길 면 프로 세 스 를 좀 더 작은 코드 세그먼트 로 분해 해 야 합 니 다.
또한 어떤 이유 로 스 크 립 트 가 서로 다른 브 라 우 저 에서 너무 오래 실행 되 고 나 자신 도 깊이 연구 하지 못 했 는 지 진정 으로 의식 하 는 사람 은 별로 없다.그래서 나 는 앉 아서 우리 가 어떤 상황 에서 그 싫어 하 는 대화 상 자 를 볼 수 있 는 지 잘 연구 하기 로 했다.스 크 립 트 의 제어 불 능 여 부 를 판단 하 는 것 은 두 가지 방법 밖 에 없다.하 나 는 몇 개의 문 구 를 실 행 했 는 지,하 나 는 스 크 립 트 실행 에 걸 린 시간 을 판단 하 는 것 이다.각 브 라 우 저 는 스 크 립 트 가 제어 되 지 않 는 다 고 판단 하 는 구체 적 인 방법 이 약간 다 를 수 있 습 니 다.
Internet Explorer
Internet Explorer 는 스 크 립 트 가 제어 되 지 않 았 는 지 여 부 를 판단 합 니 다.주로 JScript 엔진 실행 문장의 총 수 를 통 해 판단 합 니 다.기본 적 인 상황 에서 이 상한 선 은 500 만 개의 문장 이 고 이 값 은 가능 하 다레 지 스 트 를 통 해 수정 하 다..스 크 립 트 가 이 제한 을 초과 하면 아래 창 을 볼 수 있 습 니 다.
이 대화 상 자 는"이 페이지 에 스 크 립 트 가 있어 서 Internet Explorer 가 더 디 게 실 행 됩 니 다.계속 실행 하면 컴퓨터 가 응답 하지 않 는 상태 로 변 할 수 있 습 니 다"라 고 알려 줍 니 다.기술적 정확성 을 추구 하지 않 으 면,이렇게 말 하 는 것 은 확실히 좀 지나치다.대화 상자 에는 스 크 립 트 실행 을 중단 하거나 스 크 립 트 를 계속 실행 할 수 있 도록 두 가지 옵션 이 있 습 니 다.이 대화 상자 가 표시 되 었 을 때 스 크 립 트 가 완전히 중단 되 었 습 니 다.스 크 립 트 를 계속 실행 하려 면 현재 실행 중인 구문 수 를 다시 계산 합 니 다.즉,이 수치 가 다시 상한 선 에 도달 하면 이 대화 상 자 를 다시 볼 수 있 습 니 다.
Firefox
Firefox 는 스 크 립 트 엔진 이 코드 를 지속 적 으로 실행 하 는 시간 에 따라 스 크 립 트 가 제어 되 지 않 는 지 여 부 를 판단 합 니 다.기본 상한 선 은 10 초,가능about:config 페이지 를 통 해 이 값 을 수정 합 니 다.입 니 다.여기 서 주의해 야 할 것 은 alert 와 같은 모드 대화 상 자 를 팝 업 할 때 시간 을 재 지 않 는 다 는 것 이다.브 라 우 저가 스 크 립 트 를 실행 하 는 시간 이 이 상한 선 에 도달 하면 Firefox 는 다음 과 같은 대화 상 자 를 표시 합 니 다.
Firefox 대화 상자 알림:"이 페이지 의 스 크 립 트 가 현재 실행 이 바 쁘 거나 이 스 크 립 트 가 응답 을 멈 추 었 습 니 다.""이 스 크 립 트 를 실행 하지 않 고 디 버 거 에서 이 스 크 립 트 를 열 거나 이 스 크 립 트 를 계속 실행 할 수 있 습 니 다."닥 친 문 제 를 더 분명하게 묘 사 했 고 IE 가 말 하 는 것 만큼 무 섭 지 않 았 다.이 대화 상자 에서 세 가지 작업 을 수행 할 수 있 습 니 다.스 크 립 트 실행 을 중단 하거나 스 크 립 트 를 디 버 깅 하거나 스 크 립 트 를 계속 실행 할 수 있 습 니 다.Internet Explorer 와 마찬가지 로 스 크 립 트 를 계속 실행 하면 스 크 립 트 를 계속 실행 하 는 시간 에 대한 통계 가 초기 화 됩 니 다.디 버 깅 스 크 립 트 단 추 는 Firebug 를 설치 하고 이 페이지 에서 디 버 깅 을 활성화 할 때 만 나타 납 니 다.디 버 깅 스 크 립 트 작업 을 실행 하면 실행 시간 이 너무 긴 코드 세그먼트 의 구체 적 인 위 치 를 표시 할 수 있 습 니 다.
Safari
Safari 역시 스 크 립 트 엔진 이 스 크 립 트 를 지속 적 으로 실행 하 는 시간 에 따라 판단 합 니 다.제 가Webkit 의 소스 코드에 대해 반복 적 으로 연 구 를 한 후에 기본 적 인 시간 초과 시간 이 5 초 라 는 것 을 알 게 되 었 습 니 다.이 상한 선 에 도달 하면 다음 대화 상자 알림 을 드 립 니 다.
대화 상자 알림:"페이지 url 에 있 는 스 크 립 트 가 Safari 의 응답 을 잃 게 합 니 다.스 크 립 트 를 계속 실행 하 시 겠 습 니까?스 크 립 트 를 종료 하 시 겠 습 니까?"마찬가지 로 사용자 에 게 도 무 서운 힌트 는 아니다.Safari 에서 가능 합 니 다제어 되 지 않 는 스 크 립 트 검사 기능 닫 기.
Chrome
크롬 은 추적 기술 에 있어 서 약간 교활 하 다.제어 하지 못 하 는 스 크 립 트 검사 기능 은 tab 의 사고 제어(crash control)와 연 결 된 것 같다.나 는 소스 코드 를 자세히 보 았 지만 구체 적 인 제한 을 찾 지 못 했다.그러나 기본적으로 이 제한 은 시간 을 바탕 으로 10 초 정도(5 초 든 10 초 든 Safari 나 Firefox 와 일치 해 야 하 는가)로 추정 된다.크롬 프로젝트 팀 의 친구 에 게 연락 해서 확실한 정 보 를 얻 을 수 있 는 지 확인 하고 있 습 니 다.그럼 에 도 불구 하고 웹 페이지 에 제어 할 수 없 는 스 크 립 트 가 존재 한다 면 사용 자 는 아래 대화 상 자 를 볼 수 있 습 니 다.
크롬 의 힌트 는 다른 브 라 우 저 에 비해 더 심각 해 보인다."Wait"단 추 를 누 르 면 스 크 립 트 가 계속 실 행 됩 니 다.다음 상한 선 에 도달 할 때 까지"Kill pages"를 누 르 면 메모리 에 있 는 모든 정 보 를 직접 닫 고 빈 페이지 로 대체 할 수 있 습 니 다.
Opera
Opera 의 상황 은 비교적 흥 미 롭 다.그 는 통제 불 능 스 크 립 트 에 대한 제한 이 없 는 것 같다.나 는 몇 개의 긴 테스트 를 실 행 했 고 심지어 몇 분 이 걸 렸 다.이 과정 에서 브 라 우 저 는 정상적으로 응답 할 수 있 었 다.이것 은 나의 예상 밖의 일이 다.나 는 현재 의 상황 에 있어 서 이 방법 이 좋 은 지 나 쁜 지 는 확실 하지 않 지만,적어도 그것 은 효력 이 발생 하지 않 습 니까?
몇 가지 건의
사용자 가 어떤 브 라 우 저 를 사용 하 든 비슷 한 힌트 를 언제든지 볼 수 없습니다.웹 사이트 나 웹 애플 리 케 이 션 이 제품 으로 발표 되 기 전에 일반적인 성능 테스트 를 하 는 것 이 필요 합 니 다.이 방면 에서 많은 도 구 를 이용 할 수 있다.예 를 들 어Firebug's profiler(Firefox 만 지원),YUI Profiler(모든 브 라 우 저 지원)또는Internet Explorer 8's Profiler.100 밀리초 가 넘 는 스 크 립 트 를 주저 하지 않 고 찾 아야 합 니 다.이 스 크 립 트 들 은 일부 브 라 우 저 에서 만 실행 되 지 않 더 라 도 오래 실행 해 야 할 코드 세그먼트 가 포함 되 어 있 습 니 다.이 코드 들 은 성능 검사 도 구 를 통 해 재 평 가 를 해 야 합 니 다.크롬 을 테스트 의 밑줄 로 사용 하지 않도록 하 세 요.크롬 은 자바 스 크 립 트 를 실행 하 는 속도 가 다른 브 라 우 저 보다 한 단계 높 기 때 문 입 니 다(Firefox 3.1 과 최신 웹 키 트 Nightly 와 비슷 합 니 다).인터넷 익스플로러 를 테스트 의 밑줄 로 사용 한 다음 에 다른 브 라 우 저 를 테스트 하 는 것 이 좋 습 니 다.언제든지 IE 의 자바 스 크 립 트 엔진 이 가장 느 리 기 때문에 IE 에서 문 제 를 복구 한 후에 십중팔구 다른 브 라 우 저 에서 도 정상적으로 작 동 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.