Javascript KDE等离子体体自折射
我试图用JavaScript编写KDE4 plasmoid,但没有成功。 所以,我需要通过HTTP获取一些数据,并将其显示在标签中。这工作得很好,但我需要定期刷新(10秒钟一次),它不工作 我的代码:Javascript KDE等离子体体自折射,javascript,kde,plasmoid,Javascript,Kde,Plasmoid,我试图用JavaScript编写KDE4 plasmoid,但没有成功。 所以,我需要通过HTTP获取一些数据,并将其显示在标签中。这工作得很好,但我需要定期刷新(10秒钟一次),它不工作 我的代码: inLabel = new Label(); var timer= new QTimer(); var job=0; var fileContent=""; function onData(job, data){ if(data.length > 0){ var cont
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秒后不会刷新它。我的错误在哪里?至少在这里工作得很好(从git master运行最近的构建),getData()按预期被调用。您能在控制台中看到任何错误吗
编辑:问题是getUrl()显式地为KIO::get()设置NoReload,这会导致它从缓存加载数据,而不是强制从服务器重新加载数据。解决方案是向URL添加一个查询参数,使其强制重新加载。控制台中没有任何错误。我已经运行了嗅探器并查看了流量,没有看到周期性的请求,只有一个在plasmoid启动时。您正在运行哪个KDE版本?使用plasmoidviewer启动还是将其添加到Plasma?我刚刚在KDE 4.6.5上测试了这个脚本(使用plasmoidviewer),它似乎也在那里工作。您还可以尝试向回调中添加print()或debug()调用,以查看它们是否是从Kubuntu调用的.KDE 4.8.3。我在getData()函数中添加了
print(“getData”)
,现在进入控制台:$plasmoidviewer plasma\u test getData getData getData getData getData getData,但在嗅探器中我看不到请求。啊,我现在看到了。问题是它在后台使用KIO::get()和NoReload,这基本上导致它使用缓存而不是重新加载页面。尝试将查询参数附加到url,以查看这是否有帮助。忘了补充一点,您可能还想看看,因为从4.7开始,它们是创建脚本小程序的首选方法。虽然这对解决这个问题没有帮助,但还是值得注意的。