【发布时间】:2012-02-03 21:13:53
【问题描述】:
我有一个自定义浏览器插件(使用 FireBreath 构建),它将调用用户机器上的本地进程并将标准输出通过管道传回浏览器,为此我正在通过 popen() 调用运行该进程,因为我从管道读取数据我触发一个 JSAPI 事件并将其发送回浏览器。
在浏览器中,我将输出作为预格式化文本附加到 div,并告诉 div 滚动到底部。
浏览器插件中的代码:
FILE* in;
if(!(in = _popen(command_string, "r")))
{
return NULL;
}
while(fgets(buff, sizeof(buff), in)!=NULL)
{
send_output_to_browser(buff);
}
HTML & Javascript/jQuery:
<pre id="sync_status_window" style="overflow:scroll">
<span id="sync_output"></span>
</pre>
var onPluginTextReceived = function (text)
{
$('#sync_output').append(text);
var objDiv = document.getElementById('sync_status_window');
objDiv.scrollTop = objDiv.scrollHeight;
}
此方法适用于我需要它的浏览器(这是一个有限使用的内部工具),但它令人沮丧地滞后。我的过程通常在输出窗口完成滚动前大约 30-60 秒完成。那么,我该如何提高效率呢?有没有更好的方法将此文本通过管道传回浏览器?
【问题讨论】:
标签: javascript npapi browser-plugin firebreath