2010-06-16 3 views
1

이렇게하는 더 좋은 방법이있을 수 있지만, 현재 구성 가능한 옵션을 가질 수있는 멋지게 캡슐화 된 JavaScript 개체가 있습니다. Dreamweaver의 스 니펫 (snippets)을 통해 페이지에 HTML 코드 조각을 포함하고 페이지에서 DOM을 통해 실행되는 JS 파일을로드하고 해당 코드 조각을 특정 기능으로 식별 한 다음 해당 기능을 설정합니다.DOM에서 스크립트 태그의 위치를 ​​스스로 식별하는 방법은 무엇입니까?

페이지에 둘 이상의 개체를 추가하고 구성 가능하도록 설정하기 전까지는 괜찮습니다. 여기서 중요한 점은 입니다.이 객체의 대부분을 페이지에 추가하려면 내 현재 설정과 같습니다. 일반적으로 해당 위치에 있으며 'id'속성이 없기 때문입니다.

이제는 이러한 개체를 구성하려고합니다. "구성 개체가있는 경우이 개체가 확인하고 적용하는 구성 설정을 포함하는 외부 파일은 어때요?"라고 생각했습니다. 이것도 잘 작동하지만, 설정 데이터는 이제 약간 '제거'된 것으로 느껴집니다. 나는 이것이 내 다른 동료들에게 성가 시게 될 것이라고 상상한다. 그것은 단지 또 하나의 기억 일 뿐이다.

내 질문에, 나는 여전히 페이지로드시 자체 인스턴스화 객체를 트리거 할 이러한 코드 블록을 삽입하게되어 기쁩니다.하지만 설정하려고하는 것은 설정 설정이 들어있는 스크립트 블록을 삽입하려고합니다. 삽입 된 코드 블록에 부모 요소가 구성 컨텍스트임을 알리는 수단이 필요합니다.

예제 코드 :

<div class="snippet"> 
    <_contents of this 'snippet'_/> 
    <script type="text/javascript"> 
     new Snippet().init({ 
      rootElement: REFERENCE_TO_THIS_SCRIPT_TAGS_PARENT_NODE, 
      configOptionA: true, 
      configOptionB: false 
     }); 
    </script> 
</div> 

참고 : 나는이 중 하나 이상에 허용 할 때문에 <div class="snippet">이 목적에는 'id'속성이없는 한 페이지에 드롭 할 수 있습니다.

다른 몇 가지 제한 사항을 준수하는 한 다른 솔루션도 환영합니다!

답변

0

My other related question (지금 대답)이 지금, 기본적으로 내가 함께 끝났다 주소 :

<div class="snippet"> 
    <elements... /> 
    <script type="text/javascript"> 
     var tmpVarName = 'configOb_'+Math.floor(Math.random()*1111111) ; 
     document[tmpVarName] = { 
      remainVisible:true, 
      hoverBehaviour:false 
     };   
    </script> 
</div> 

... 그리고 인스턴스화 및 구성에 적절한 요소를 검색합니다 모든 페이지에로드 된 스크립트에서 :

상기 코드의보다 완전한 콘텍스트를 들어
var snippets = yd.getElementsBy(function(el){ 
        return yd.hasClass(el, "snippet"); 
       },null,document); 
for(var i=0; i<snippets.length;i++) 
{ 
    var s = snippets[i] ; 
     yd.generateId(s, '_snippet_'+i); 
    var tag = yd.getElementBy(function(el){ 
       return true; 
      },'script',s); 
    var ob = new Snippet(); 
     ob.setId(s.id); 
     ob.init(eval(tag.innerHTML)); 
} 

;

  • 야드 = YAHOO.util.Dom
  • Snippet.init()와 Snippet.setId은() 코드 조각이라는 모듈 개체() 메소드를 노출 이제

내 삽입 '청크 그 '에는 id 속성이없고 동적으로 평가되는 컨텍스트 설정 객체가 있습니다. 원하는만큼 많은 변형을 추가 할 수 있습니다. 내 Snippet() 객체 전체가 내 페이지에 추가되는 경우에만 실제 관심사가 성능입니다.

+0

Rob W가 최근에 기본 개념을 전달했습니다. http://stackoverflow.com/questions/9209823/what-is-the-current-element-in-javascript – danjah

관련 문제