ブラウザー (IE) で実行されている ActiveX オブジェクト (所有しているソース コード) があります。ActiveX オブジェクトには、イベントを発生させる UI があります。ブラウザでこれらのイベントに応答したい。
私は ActiveX オブジェクトのイベントから JavaScript 関数を呼び出したくないので、代わりに 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();
}
適切なポーリング間隔は?
確かではありませんが、作業量は少ないと思います。既にキャッシュされた文字列を返すか、null を返す ActiveX オブジェクトのメソッドを呼び出すだけです。
頻繁にポーリングしたいと思います。これにより、ブラウザー (実際には JavaScript) が ActiveX オブジェクトの UI イベントに迅速に応答するように見えます。
100 ミリ秒は小さすぎますか? 50ミリ秒くらい?
100 ミリ秒の間隔で、ブラウザの CPU 使用率は 1% しか表示されませんが、それは私のマシンだけです。一般的にはどうですか(IEを実行しているデスクトップマシン)?
これがネイティブ スレッドである場合、50 ミリ秒ごとに起動することを心配する必要はありませんが、IE で JavaScript を実行した経験はほとんどありません。