У меня есть объект ActiveX (у которого есть исходный код), работающий в браузере (IE). Объект ActiveX имеет пользовательский интерфейс, который вызывает события. Я хочу ответить на эти события в браузере.Что такое хороший интервал setTimeout для опроса в IE?
Я не хочу вызывать функции 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, который либо возвращает уже кэшированную строку, либо возвращает null.
Я бы хотел опросить часто: так, что браузер (на самом деле JavaScript) быстро отвечает на события пользовательского интерфейса в объекте ActiveX.
100 мсек слишком мало? Как насчет 50 мсек?
С интервалом в 100 мсек я вижу только 1% загрузки процессора в браузере: но это только на моей машине. А вообще вообще (настольные mchines работают с IE)?
Если бы это был родной поток, я бы не стал беспокоиться о том, чтобы разбудить его каждые 50 мс, но у меня мало опыта работы с JavaScript в IE.
Не могу ли я чаще опросить? Если нет, то почему нет, или в каких обстоятельствах я не должен? Когда пользователь щелкает что-то в объекте ActiveX, я хотел бы, чтобы другие вещи на странице отвечали на этот пользовательский ввод «по-видимому мгновенно» (так что небольшая часть секунды). – ChrisW
С одной стороны, я считаю, что все более частые будут мешать механизмам энергосбережения. – SLaks
«Вам действительно нужны мгновенные реакции?» Обычно, когда я пишу пользовательский интерфейс, я проектирую/предпочитаю, чтобы он был быстрым/отзывчивым. В противном случае пользователь нажимает что-то, ничего не происходит, и они похожи на «???». – ChrisW