2012-04-28 2 views
0

jsdom을 사용하여 웹 사이트의 변경/실제 DOM을 가져올 수 있습니까? 예를 들어jsdom을 사용하여 현재 브라우저 DOM을 가져 옵니까?

:

클라이언트 내 test.html 파일에서

나는 새로운 <div class="p"> 요소 추가 버튼을 가지고 : 다음

$('#button').click(function(){ 
$('body').append('<div class="p">new</div>'); 
}); 

을 나는이 기능을에 호출하는 다른 버튼 서버 (NowJS 또는 Socket.IO 포함).


server.js 파일에서

지금, 나는 class="p" 모든 첨부 div 요소를 계산하려면 서버 :

everyone.now.countDiv = function() { 
    var jquery = fs.readFileSync("./jquery16.js").toString(); 

    jsdom.env(
     { 
     html: 'http://localhost:8080/test.html', 
     src: [ 
      jquery 
     ], 
     done: function(errors, window) { 
     var $ = window.$; 
     var len = window.$('.p').length; 
     console.log("Divs: ", len); 
     } 
    }); 
} 

내가의 요소를 셀 수 있다는 것을 알 클라이언트 쪽을 찾아 서버에 전달합니다. 그러나 jsdom이 "새로운/현재"DOM에 액세스 할 수 있으면 관심이 있습니다.

jsdom이 text.html의 DOM을 읽지 만 웹 사이트의 실제 DOM에 액세스 할 수 없다고 가정합니다.

+0

더 큰 상황을 제공해주십시오. 위의 코드는 처음에 페이지를로드 할 때 (GET인지) 또는 페이지의 버튼 (POST/PUT/Ajax)을 클릭 할 때 발생합니까? – k00k

답변

2

jsdom을 사용하여 템플릿의 DOM을 수정할 수는 있지만 여전히 서버 측에 남아 있습니다.

서버 측은 클라이언트 측 DOM 또는 "라이브 DOM"이라고하는 것과 아무 관련이 없습니다.

0

NowJS - http://nowjs.com/과 Socket.io - http://socket.io/ (NowJS에 포함)을 살펴볼 수 있습니다.

NowJS를 사용하면 서버와 클라이언트간에 기능과 데이터를 공유 할 수 있으며 그 반대의 경우도 가능합니다.

관련 문제