У меня есть настраиваемый плагин для браузера (построенный с помощью FireBreath), который будет вызывать локальный процесс на компьютере пользователя и передать stdout обратно в браузер, для этого я запускаю процесс через вызов 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 секунд, прежде чем оконное окно завершает прокрутку. Итак, как я могу сделать это более эффективным? Есть ли лучший способ передать этот текст обратно в браузер?
Они, кажется, как разумное место для начала; однако я подозреваю, что проблема связана с перекрестными процессами. Я бы добавил несколько журналов и сделал некоторые профилирования, чтобы увидеть, где происходит большая часть вашего «отставания». – taxilian
Я пошёл на сторону C и закрепил точки поиска DOM, теперь он более плавный. –