我有 Posiflex MSR MR2000 系列。我已经安装了 Posiflex OPOS Control。我需要在 IE 8 下的 html 页面上管理 MSR。我在我的 JS 代码/对象中使用 ocx 控件 OPOS.MSR 以及有关 CLSID。我有这样的代码(ActiveX 版本)
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 应用程序中运行良好:Claim 方法返回 OPOS_SUCCESS (0)。但是当我在 Internet Explorer 8 中将其作为 HTM 尝试时,Claim 方法引发异常并且对象 ResultCode 属性为 104 (OposENoservice)。Recall 返回 ResultCode 102 (OposEClaimed)。
我需要在 Internet Explorer 中正确获取工作声明方法。为什么相同的代码在基于 IE 的 HTA 中工作方式不同?