У меня есть объект ActiveX (который у меня есть исходный код), работающий в браузере (IE).Объект ActiveX имеет пользовательский интерфейс, который вызывает события.Я хочу отвечать на эти события в браузере.
Я не хочу вызывать функции JavaScript из событий объекта ActiveX: и поэтому вместо этого я хочу, чтобы JavaScript опрашивал метод объекта ActiveX (чтобы сказать: «Есть ли у вас какие-либо события, чтобы сообщить?»).
Я сделаю это с кодом, подобным этому:
function findActiveXObject() {
return document.getElementById('MyActiveXObject');
}
function startPolling() {
setTimeout('pollForEvents()', 100);
}
function pollForEvents() {
var activeXObject = findActiveXObject();
var eventMsg = activeXObject.PollForEvent();
if (eventMsg != null)
{
//do something with the event
alert(eventMsg);
}
//poll again soon
startPolling();
}
Какой хороший интервал опроса?
Полагаю, хотя я не уверен, что объем работы невелик: он просто вызывает метод объекта ActiveX, который либо возвращает уже кэшированную строку, либо возвращает ноль.
Я бынравится часто опрашивать: чтобы браузер (на самом деле JavaScript) быстро реагировал на события пользовательского интерфейса в объекте ActiveX.
100 мс слишком мало?Как насчет 50 мсек?
С интервалом 100 мсек я вижу только 1% загрузки процессора в браузере, но это только на моей машине.А что вообще (настольные машины работают с IE)?
Если бы это был нативный поток, я бы не беспокоился о том, чтобы разбудить его каждые 50 мсек, но у меня мало опыта работы с JavaScript в IE.