none
OPOS Claim не захватывает устройство в JS (IE) RRS feed

  • Вопрос

  • Добрый день. Мне необходимо подключить считыватель карт к html странице посредством ActiveX.
    Считыватель Posiflex MR2200U. Подключается посредством USB. Установил Posiflex OPOS Control. В Control Manager определил имя устройства, написал следующий код
        function msrop(){
     
            try { 
              if ( r = msro.Open('MR1') ) { log ( ER100 + ' ' + 'MSROP' + ' ' + r ); return }
              log(r);
            } 
            catch ( e ) { 
              log ( 'MSROP' , e ) ; return ;
            }
     
        }
     
        function msrcl(){
            try { 
              if ( r = msro.Claim(-1) ) { log ( ER100 + ' ' +  'MSRCL' + ' ' + r ); return }
              msro.DeviceEnabled = true ;
              msro.DataEventEnabled = true ;
              log(r);
            } 
            catch ( e ) { 
              log ( 'MSRCL' , e ) ; return ;
            }
        }
     
        function ol(){
     
            try { msro = new ActiveXObject ( 'OPOS.MSR' ) ; } catch ( e ) { alert(e) }
     
            bind ( msro ) ;
        }
     
        function bind( o ){
            function o::DataEvent(){
                log('<br/>' + '->Tracks read ' + 'T1: ' + o.Track1Data + ' T2: ' + o.Track2Data + 'T3: ' + o.Track3Data + 'T4: ' + o.Track4Data );
                log('<br/>' + '->DataEventEnabled ' + ( msro.DataEventEnabled = true ))
                var d = document.getElementById('track');
                d.innerHTML = o.AccountNumber;
            }
        }
            <button onclick="msrop()">Open</button>
            <button onclick="msrcl()">Claim</button>
    Код по нажатиям на кнопки открывает и захватывает устройство. При зачитывании карты выводит информацию о номер карты. Если этот код поместить в HTA приложение, то он работает без проблем, устройство открывается и захватывается.
    Если запустить этот код как HTM страницу в IE 8, то устройство открывается успешно, а вот при захвате происходит исключение. Свойство ResultCode устанавливается в 104 (OposENoservice). При повторной попытке захвата метод возвращает ResultCode (102) OposEClaimed.

    Настройки безопасности IE установлены на низкие.

    Почему Claim не отрабатывает корректно в IE?

    27 февраля 2015 г. 13:15