2012-05-30 4 views
0

JavaScript로 KDE4 plasmoid를 작성하려고하는데 성공하지 못했습니다. 그래서 HTTP를 통해 데이터를 가져 와서 Label에 표시해야합니다. 잘 작동하지만 정기적으로 새로 고침 (10 초에 한 번)이 필요합니다. 작동하지 않습니다.KDE plasmoid ind autorefresh

내 코드 :

inLabel = new Label(); 
var timer= new QTimer(); 
var job=0; 
var fileContent=""; 

function onData(job, data){ 
    if(data.length > 0){ 
     var content = new String(data.valueOf()); 
     fileContent += content; 
    } 
} 

function onFinished(job) { 
    inLabel.text=fileContent; 
} 

plasmoid.sizeChanged=function() 
{ 
    plasmoid.update(); 
} 

timer.timeout.connect(getData); 
timer.singleShot=false; 
getData(); 
timer.start(10000); 

function getData() 
{ 
    fileContent=""; 
    job = plasmoid.getUrl("http://192.168.0.10/script.cgi"); 
    job.data.connect(onData); 
    job.finished.connect(onFinished); 
    plasmoid.update(); 
} 

그것은 한 번 스크립트를 얻고 10 초 후에 새로 고침하지 않습니다. 내 실수는 어디 갔지?

답변

1

getData()가 예상대로 호출되고 있습니다. (git master에서 최신 빌드를 실행하는 것만으로도) 여기서 잘 작동합니다. 콘솔에서 오류를 볼 수 있습니까?

EDIT : 문제는 getUrl()이 KIO :: get()에 대해 NoReload를 명시 적으로 설정하여 서버에서 다시로드하지 않고 캐시에서 데이터를로드하도록하는 것입니다. 해결 방법은 강제로 URL을 다시로드하도록 쿼리 매개 변수를 URL에 추가하는 것이 었습니다.

+0

콘솔에 오류가 없습니다. 나는 스니퍼 (sniffer)를 달리고 교통량을 살펴 보았고 정기적 인 요청을 보지 못했다. 단 하나의 플라스마이드가 시작되었다. – Shura

+0

어떤 KDE 버전을 실행하고 있습니까? plasmoidviewer로 시작하거나 그냥 플라즈마에 추가? 나는 KDE 4.6.5에서도 (plasmoidviewer를 사용하여) 스크립트를 테스트했으며 거기에서도 작업하는 것으로 보인다. 콜백에 print() 또는 debug() 호출을 추가하여 호출 여부를 확인할 수도 있습니다. – teprrr

+0

Kubuntu의 KDE 4.8.3. 나는 GetData의() 함수에'인쇄 ("GetData의")'추가 이제 콘솔에서 얻을 수있다 : $ plasmoidviewer plasma_test GetData의 GetData의 GetData의 GetData의 GetData의 GetData의 GetData의 그러나 스니퍼에 내가 표시되지 않습니다 요청. – Shura