2012-05-30 36 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()如預期被調用。你能看到控制檯中的任何錯誤嗎?

編輯:問題是,使用getURL()顯式設置爲NoReload KIO ::得到(),導致其從緩存中加載數據,而不是從服務器強制重新加載。解決方案是向URL中添加查詢參數,以使其強制重新加載它。

+0

控制檯中沒有任何錯誤。我跑了嗅探器,看着交通,沒有看到定期的要求,只有一個在plasmoid開始。 – Shura

+0

你正在運行哪個KDE版本?用plasmoidviewer啓動還是隻添加到Plasma?我剛剛在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