2012-12-20 2 views
3

나는 여러 웹 사이트에서 플러그인으로 사용할 스크립트를 작성하고 있습니다. Javascript 만 사용해야하며 프레임 워크는 필요 없습니다. 나는이 웹 사이트에로드 할 수있는 다른 스크립트 나 프레임 워크를 사용하지 않고도 스크립트를로드하는 가장 좋은 방법은 무엇인지 직접 묻습니다. 나는 내가 사용하고자하는 함수를 호출 전역 함수를 할 생각했고, 나는이처럼 window.load 이벤트에이 기능을 넣어 :Javascript - onload 이벤트 사용

<script> 
    var global = function(){ 
    object.domain.function1(); 
    object.domain.function2(param1, param2); 
    object.domain.function3(1); 
} 
(function(){ 
    if(document.addEventListener){ 
     document.addEventListener('load',global, false); 
    } 
    if(document.attachEvent){ 
     document.attachEvent('onload',global); 
    } 
})(); 
</script> 

또는 단순히 :

<script> 
    object.domain.function1(); 
    object.domain.function2(param1, param2); 
    object.domain.function3(1); 
</script> 

물론 일부 요소가 내 페이지에로드되어야합니다. 미리 감사드립니다.

+0

2 같은 끝낼 함께이 모든 것을 할 수 있습니다 퍼팅. 어떤 문제가 더 복잡하게 풀릴 필요가 있다고 예상되는 정확히 어떤 문제입니까? –

+0

''load ''를 청취 할 때'document'가 아닌'window'에'.addEventListener'를 사용해야합니다. –

+1

당신이 관심을 가질만한 또 다른 이벤트는 목표'document'가있는 ['DOMContentLoaded'] (https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/DOMContentLoaded_ (이벤트))입니다 –

답변

1

..

  • 오염을하고, 어떤 다른 스크립트와 어떤 문제를 초래하지 않고 내 스크립트를로드하는 가장 좋은 방법은 또는

당신이 생각해야 할 일을 프레임 워크 네임 스페이스

  • 방해하는 다른 스크립트
  • 두 번째 요점은 쉽게 해결할 수 있으며, .addEventListener은 서로 겹쳐 쓰지 않는 동일한 이벤트에 대해 많은 수신기를 추가하는 것을 지원합니다. 관심있는 두 가지 이벤트 ('load', window'DOMContentLoaded', document)가 있습니다. <script>은 항상 <body>의 끝에 붙일 수 있지만 개인적으로는 HTML을 JavaScript와 혼합하거나 DOM 트리를 변경하기 때문에이 작업을 맘에 들지 않습니다.

    첫 번째 사항은 익명 함수를 사용하여 수행 할 수 있으며 네임 스페이스를 차지해야 할 경우 모든 변수와 메서드를 하나의 개체 안에 유지하여 영향을 최소화 할 수 있습니다.

    var myObjectName = { // everything in one object in global namespace 
        domain: { 
         function1: function() { /*...*/ }, 
         function2: function() { /*...*/ }, 
         function3: function() { /*...*/ } 
        } 
    }; 
    
    (function (fn) { 
        if (window.addEventListener) { 
         window.addEventListener('load', fn, false); 
        } 
        else if (window.attachEvent) { // Consider if support for `.attachEvent` is really necessary, people need to move on. 
         window.attachEvent('onload', fn); 
        } 
    })(function() { // pass your function anonymously 
        myObjectName.domain.function1(); 
        myObjectName.domain.function2(param1, param2); 
        myObjectName.domain.function3(1); 
    }); 
    
    2

    <body> 태그 안에 javascript를 넣는 것이 좋습니다. 전체 페이지가로드 된 후 자바 스크립트를 실행하는 데 비교적 신뢰할 수있는 방법은 페이지 하단의 <script> 태그에 자바 스크립트를 배치하는 것입니다.

    이 방법을 사용하는 것이 바람직한 방법은 아니지만, onload 이벤트를 사용하는 것이 적절하지 않은 경우이 단계를 수행하는 것이 좋습니다.

    +0

    깜박했습니다 그것을 말하십시오 그러나 원본은 모든 javascript 파일 (Google analytics를 제외하고 어쩌면) 같이 바닥에 그것을 두는 추천되는 페이지에서 어느 곳에서든지 일 수있다 그러나 어떤 사람들 정상에 그것을 에서 둘 것입니다. 따라서 onload 이벤트 또는 domready 이벤트가 필요합니다. 다른 스크립트와 충돌하지 않고 가장 좋은 방법은 무엇인지 묻는 것입니다. – M4nch4k

    +0

    스크립트가 다른 것과 어떻게 충돌 할 수 있는지 잘 모르겠습니다.그것이 어떤 식 으로든 충돌 할 것이라면, 그것은'onload' 또는'domready'를 사용하면서 여전히 충돌 할 것 같습니다. 나는 "다른 기존 자바 스크립트와 간섭하거나 오류가 발생합니다"라는 충돌을 분명히해야합니다. – NemesisX00