2014-01-21 1 views
1

JS 파일이 있고 웹 사이트에 두 번 포함됩니다. 여러 핸들러를 창에 연결하지 못하도록하는 방법

JS 코드 창에 이벤트 리스너를 부착 내 크롬 확장에 의해 주입 된 사용자

  • 가 포함되어 있습니다. 이 이벤트 리스너는 위에 설명 된 분명한 이유로 인해 하나가 아닌 두 번 실행됩니다.

    이 코드는 제대로 작동하는 것 같지만 올바른 접근 방식을 알고 싶습니다..

    if (typeof customMessageEventListenerAdded == 'undefined') { 
        addListener(window, 'message', handleMessage); 
        customMessageEventListenerAdded = true; 
    } 
    

    이 사례를 올바르게 처리하는 방법을 알고 싶습니다.

    if (typeof (window.theScript) == 'undefined') { 
        window.theScript = { 
         someValue: ...; 
         someFunction: function(){ ... }; 
         ctor: function(){ ... }; 
        }; 
        window.theScript.ctor(); 
    } 
    

    여러 흠도가 만드는 iffalse하고 코드 이동 :

  • 답변

    1

    나는 보통 (난 보통 JS 역학 CRM을 사용자 정의하기 위해 작성하지만 같은 접근 방식은 "정상적인"웹 페이지를 맞아야합니다) 이런 식으로 내 스크립트를 작성할 (분명히 theScript은 고유 식별자 여야 함). 모든 코드는 함수로 묶여 있으며, 호출 된 내용과 호출 된 시점을 제어 할 수 있습니다.

    다른 방법이 있습니다. 즉, 하나만 이름을 지정하면 requirejs을 활용할 수 있습니다.

    +0

    +1 좋은 접근 방식. 나는 내가 그것을 갈 수 있다고 생각해. 훨씬 나은 접근법. 언젠가 다른 누군가가 더 나은 접근법으로 차임을 할 때까지 기다려 봅시다 (존재한다면) 그렇지 않으면 받아 들일 것입니다. – sachinjain024

    관련 문제