[JQUERY] '.ready $ (문서) ()'의 비 jQuery를 상응하는 무엇입니까?
JQUERY'.ready $ (문서) ()'의 비 jQuery를 상응하는 무엇입니까?
해결법
-
1..ready $ (문서) ()의 좋은 점은 창로드하기 전에 화재 것입니다. 모든 외부 자산 및 이미지를 포함하여,로드 될 때까지로드 기능을 기다립니다. $ (문서) .ready 그러나, DOM 트리 화재 완료하고 조작 할 수 있습니다 때. 당신이 jQuery를하지 않고 준비 DOM을 acheive하려는 경우, 당신은이 라이브러리에 확인할 수 있습니다. 누군가가 jQuery를에서 불과 준비 부분을 추출 하였다. 그것의 좋은 작은 당신은 그것을 유용하게 찾을 수 있습니다 :
.ready $ (문서) ()의 좋은 점은 창로드하기 전에 화재 것입니다. 모든 외부 자산 및 이미지를 포함하여,로드 될 때까지로드 기능을 기다립니다. $ (문서) .ready 그러나, DOM 트리 화재 완료하고 조작 할 수 있습니다 때. 당신이 jQuery를하지 않고 준비 DOM을 acheive하려는 경우, 당신은이 라이브러리에 확인할 수 있습니다. 누군가가 jQuery를에서 불과 준비 부분을 추출 하였다. 그것의 좋은 작은 당신은 그것을 유용하게 찾을 수 있습니다 :
Google 코드에서 domready
-
2.이는 ECMA에서 완벽하게 작동
이는 ECMA에서 완벽하게 작동
document.addEventListener("DOMContentLoaded", function() { // code... });
단지 DOM 트리 $ (문서) .ready 대기 창로드 외부 자산과 이미지를 포함한 모든 요소를 확인하면서 .ready 때문에 창로드 JQuery와 $ (문서)에 동일하지 않습니다.
편집 : 추가 IE8 이상 해당 월 Derk의 관찰에 감사합니다. 당신은이 링크에서 MDN에이 코드의 소스를 읽을 수 있습니다 :
// alternative to DOMContentLoaded document.onreadystatechange = function () { if (document.readyState == "interactive") { // Initialize your application or run some code. } }
"대화"에서 떨어져 다른 옵션이 있습니다. 자세한 내용은 MDN 링크를 참조하십시오.
-
3.내가 함께 넣어 작은 일
내가 함께 넣어 작은 일
domready.js
(function(exports, d) { function domReady(fn, context) { function onReady(event) { d.removeEventListener("DOMContentLoaded", onReady); fn.call(context || exports, event); } function onReadyIe(event) { if (d.readyState === "complete") { d.detachEvent("onreadystatechange", onReadyIe); fn.call(context || exports, event); } } d.addEventListener && d.addEventListener("DOMContentLoaded", onReady) || d.attachEvent && d.attachEvent("onreadystatechange", onReadyIe); } exports.domReady = domReady; })(window, document);
사용 방법
<script src="domready.js"></script> <script> domReady(function(event) { alert("dom is ready!"); }); </script>
당신은 또한에 콜백 실행 두 번째 인수를 전달하여 컨텍스트를 변경할 수 있습니다
function init(event) { alert("check the console"); this.log(event); } domReady(init, console);
-
4.지금은 2018하다는 여기에 빠르고 간단한 방법입니다.
지금은 2018하다는 여기에 빠르고 간단한 방법입니다.
이 이벤트 리스너를 추가하지만, 이미 발사하면 우리는 DOM이 준비 상태에 있거나이 완료 있다는 것을 확인할 수 있습니다. 완성 된로드 (이미지, 스타일 시트, 프레임, 등)가 이전 또는 하위 자원 후에이 발생 할 수 있습니다.
함수 domReady (FN) { // 우리는 초기 파티에 있다면 document.addEventListener ( "DOMContentLoaded", FN); // 늦게하는 경우; 나는 시간을 의미한다. (document.readyState === "대화"|| document.readyState === "완료") {경우 FN (); } } domReady (() =>을 console.log ( "DOM 와서 그것을 얻을 준비가되어 있습니다!"));
여기뿐만 아니라 타이프 라이터를 포함 표준 ES6 가져 오기 및 내보내기 내가 쓴 사용하여 몇 가지 빠른 유틸리티 헬퍼입니다. 어쩌면 내가 종속성으로 프로젝트에 설치 될 수 이러한 빠른 라이브러리를 만들기 위해 주위를 얻을 수 있습니다.
export const domReady = (callBack) => { if (document.readyState === "loading") { document.addEventListener('DOMContentLoaded', callBack); } else { callBack(); } } export const windowReady = (callBack) => { if (document.readyState === 'complete') { callBack(); } else { window.addEventListener('load', callBack); } }
export const domReady = (callBack: () => void) => { if (document.readyState === "loading") { document.addEventListener('DOMContentLoaded', callBack); } else { callBack(); } } export const windowReady = (callBack: () => void) => { if (document.readyState === 'complete') { callBack(); } else { window.addEventListener('load', callBack); } }
export const domReady = new Promise(resolve => { if (document.readyState === "loading") { document.addEventListener('DOMContentLoaded', resolve); } else { resolve(); } }); export const windowReady = new Promise(resolve => { if (document.readyState === 'complete') { resolve(); } else { window.addEventListener('load', resolve); } });
-
5.즉, 여전히 IE8에서 작동하는 좋은 교체 http://youmightnotneedjquery.com/#ready하는 것입니다 따르면
즉, 여전히 IE8에서 작동하는 좋은 교체 http://youmightnotneedjquery.com/#ready하는 것입니다 따르면
기능 준비 (FN) { 경우 (document.readyState! = '로딩') { FN (); } 다른 경우 (document.addEventListener) { document.addEventListener ( 'DOMContentLoaded', FN); } 다른 { document.attachEvent ( '을 onreadystatechange'함수 () { 경우 (document.readyState! = '로딩') FN (); }); } } // 테스트 window.ready (함수 () { 경고 ( '그것은 작동합니다'); });
개선 사항 : FN의 종류가 함수 인 경우 개인적으로도 확인합니다. 그리고 @elliottregan로 사용 후 이벤트 리스너를 제거 제안했다.
나는이 대답을 찾고했지만 여기를 찾을 수 없습니다 때문에 늦게이 질문에 대답하는 이유입니다. 그리고 나는 이것이 가장 좋은 방법이라고 생각합니다.
-
6.IE8이 90 % + 브라우저에서 지원하는 표준 기반의 교체, DOMContentLoaded는 있지만 (그래서 브라우저 지원을위한 JQuery와에 의해 코드 사용 아래) :
IE8이 90 % + 브라우저에서 지원하는 표준 기반의 교체, DOMContentLoaded는 있지만 (그래서 브라우저 지원을위한 JQuery와에 의해 코드 사용 아래) :
document.addEventListener("DOMContentLoaded", function(event) { //do work });
아래에 묘사 된 것처럼 jQuery의 기본 기능은 훨씬 더, 다만 창로드보다 복잡하다.
function bindReady(){ if ( readyBound ) return; readyBound = true; // Mozilla, Opera and webkit nightlies currently support this event if ( document.addEventListener ) { // Use the handy event callback document.addEventListener( "DOMContentLoaded", function(){ document.removeEventListener( "DOMContentLoaded", arguments.callee, false ); jQuery.ready(); }, false ); // If IE event model is used } else if ( document.attachEvent ) { // ensure firing before onload, // maybe late but safe also for iframes document.attachEvent("onreadystatechange", function(){ if ( document.readyState === "complete" ) { document.detachEvent( "onreadystatechange", arguments.callee ); jQuery.ready(); } }); // If IE and not an iframe // continually check to see if the document is ready if ( document.documentElement.doScroll && window == window.top ) (function(){ if ( jQuery.isReady ) return; try { // If IE is used, use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ document.documentElement.doScroll("left"); } catch( error ) { setTimeout( arguments.callee, 0 ); return; } // and execute any waiting functions jQuery.ready(); })(); } // A fallback to window.onload, that will always work jQuery.event.add( window, "load", jQuery.ready ); }
-
7.평범한 자바 스크립트에서, 아니 라이브러리와? 그것은 오류입니다. $ 단순히 식별자이며, 당신이 그것을 정의하지 않는 한 정의되지 않습니다.
평범한 자바 스크립트에서, 아니 라이브러리와? 그것은 오류입니다. $ 단순히 식별자이며, 당신이 그것을 정의하지 않는 한 정의되지 않습니다.
이 (다른 라이브러리와 충돌없이 사용할 수 있습니다 또한 jQuery를라고도 함) 자신의 "모든 개체"입니다으로 jQuery를가 $를 정의합니다. 당신이 jQuery를 (또는 그것을 정의하는 다른 라이브러리)을 사용하지 않는 경우, 다음 $ 정의되지 않습니다.
아니면 해당하는 일반 자바 스크립트로 무엇을 물어? 이 경우, 당신은 아마 정확히 일치하지 않는, 그러나 가까운 바닐라 자바 스크립트 같은 효과를 얻을 수있는 가장 빠르고 쉬운 방법입니다 창로드를합니다.
-
8.최근 브라우저에서 가장 쉬운 방법은 적절한 GlobalEventHandlers를 사용하는 것, onDOMContentLoaded, 온로드, onloadeddata (...)
최근 브라우저에서 가장 쉬운 방법은 적절한 GlobalEventHandlers를 사용하는 것, onDOMContentLoaded, 온로드, onloadeddata (...)
onDOMContentLoaded = (함수 () {을 console.log ( "DOM 준비!")}) () 온로드 = (함수 () {을 console.log는 ( "페이지가 완전히로드!")}) () onloadeddata = (함수 () {CONSOLE.LOG는 ( "데이터로드!")}) ()
초기 HTML 문서가 완전히로드 및 구문 분석되었을 때 DOMContentLoaded 이벤트가 마무리 로딩에 스타일 시트, 이미지 및 서브 프레임을 기다리지 않고, 발생합니다. 아주 다른 이벤트 부하가 완전히로드 된 페이지를 감지하는 경우에만 사용되어야한다. 그것은 DOMContentLoaded 훨씬 더 적절할 것 사용 부하에 매우 인기 실수, 그래서주의입니다.
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded
준비가되면 그 자체를 트리거로 사용되는 기능은,이 경우에 매우 유용한 인생입니다 :
https://en.wikipedia.org/wiki/Immediately-invoked_function_expression
모든 스크립트의 마지막에 배치 할 분명히 더 적절하다.
ES6, 우리는 또한 화살표 기능으로 쓸 수 있습니다 :
온로드 = (() => {을 console.log ( "ES6 페이지가 완전히로드!")}) ()
어떤 변수가 준비를위한 가장 DOM 요소를 사용하는 것입니다, 우리는 방아쇠를, 화살표가 붙은 인생을 기다릴 수 있습니다.
동작은하지만, 적은 메모리에 미치는 영향과, 동일합니다.
바닥 글 = (은 () => {을 console.log (이하 "바닥 글로드!")}) ()
대부분의 경우, 문서 객체는 브라우저에서 적어도 때 준비 트리거됩니다. 구문은 아주 좋은,하지만 호환성에 대한 자세한 testings를 필요합니다.
document=(()=>{ /*Ready*/ })()
9.몸에 onLoad도 대안이 될 수있다 :
몸에 onLoad도 대안이 될 수있다 :
<html> <head><title>Body onLoad Exmaple</title> <script type="text/javascript"> function window_onload() { //do something } </script> </head> <body onLoad="window_onload()"> </body> </html>
from https://stackoverflow.com/questions/2304941/what-is-the-non-jquery-equivalent-of-document-ready by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] JQuery와 변화 클래스 이름 (0) 2020.10.07 [JQUERY] 보다 큼 /보다 적게보다는위한 스위치 문 (0) 2020.10.07 [JQUERY] 어떻게 자동 완성 플러그인 결과를 맞춤 형식을 지정할 수 있습니다? (0) 2020.10.07 [JQUERY] fn.toggle (핸들러 (eventObject)가, 핸들러 (은 EventObject)는 ...) 어디 갔다? (0) 2020.10.07 [JQUERY] 어떻게 JSP / 서블릿과 Ajax를 사용하여 서버에 파일을 업로드하려면? (0) 2020.10.07