2012-07-01 6 views
6

Disqus 양식이 업데이트되면 다시 계산해야합니다. 새로운 코멘트, 오류 메시지는 몇 가지 예입니다. 본질적으로 Disqus iframe을 수직으로 확장시키는 이벤트입니다. API를 확인했지만 공개 이벤트를 찾지 못했습니다. 이벤트가 공개적으로 접근 가능한 분위기가 아닌 것처럼 보입니다. 그래서 첫 번째 질문은 Disqus가 공개 이벤트를 첨부해야합니까?Disqus에 공개 이벤트가 있습니까?

두 번째는 Disqus의 이벤트에 연결할 수있는 방법이 없다면 MutationEvent가 Disqus의 내용이 iFrame에 있다는 사실을 고려하여 나를 속일 수 있을까?

+0

답변을 찾았습니까? : D – TimPietrusky

+0

불행히도, 팀. – spliter

답변

1

나는 특히 Disqus에 대한 공개 이벤트에 대해 잘 모르겠지만, 그냥은 iframe의 높이 변화를 모니터링해야하는 경우, 여기에 한 가지 방법이다 : 그것은 기본적으로 해킹,

var iframe = document.getElementById('myIframe'); 
var iframeHeight = iframe.clientHeight; 

setInterval(function() { 
    if(iframe.clientHeight != iframeHeight) { 
     // My iframe's height has changed - do some stuff! 

     iframeHeight = iframe.clientHeight; 
    } 
}, 1000); 

부여. 그러나 그것은 작동해야합니다! 나는 여기에서 지금까지

function disqus_config() { 
    this.callbacks.onNewComment = [function() { trackComment(); }]; 
} 

때우기 최고의

+0

예, 이것은 실제로 해킹입니다. 게다가 나만큼 우아하지 않은 것도 있습니다. 높이를 조절하는데 1 초의 지연은 실제로 내가 원하는 것이 아닙니다. 특히 iframe이 변경되었는지 여부에 관계없이 매초마다 폴링을 수행하는 컴퓨팅 성능을 사용할 것이기 때문에 그렇습니다. 그러나 어쨌든 스 니펫에 대해 감사드립니다. – spliter

+0

장시간 건조하면 우박을 환영 할 수 있습니다. 이 솔루션은 유용 할 수 있습니다. – skobaljic

0

글쎄, 그들은 공개적으로 기록 된 사건이 ​​없다 (내가 말할 수있는 한). 그러나 응용 프로그램은 상위 창에서 많은 이벤트를 트리거합니다. 따라서 그들에게 귀 기울이고 어떤 행동을 취하는 것이 가능합니다. 다음 스 니펫으로이를 수행 할 수 있습니다.

window.addEventListener('message', function (event) { 
    // if message is not from discus frame, leap out 
    if (event.origin != 'https://disqus.com' && event.origin != 'http://disqus.com') return; 

    // parse data 
    var data = JSON.parse(event.data); 

    // do stuff with data. type of action can be detected with data.name 
    // property ('ready', 'resize', 'fakeScroll', etc) 
}, false); 

웹킷 기반 브라우저에서는 잘 작동합니다. 파이어 폭스에는 몇 가지 문제가있을 수 있습니다. IE는 ... 글쎄, 나는 그것을 시험 할 수있는 IE가 없다.