0

Мы используем устройство для подписи подписи Topaz Systems для записи электронных подписей на документы.Как получить доступ к объекту ActiveX подписи Topaz через javascript?

Вот компания предоставила демо для использования JavaScript:

Javascript на основе HTML Интернет Подпись демо download

подпись колодки добавляется к странице через <OBJECT /> элемент.

<OBJECT classid=clsid:69A40DA3-4D42-11D0-86B0-0000C025864A height=75 
     id=SigPlus1 name=SigPlus1 
     style="HEIGHT: 90px; WIDTH: 300px; LEFT: 0px; TOP: 0px; border: 1px solid #000; margin-top:10px; " VIEWASTEXT> 
    <PARAM NAME="_Version" VALUE="131095"> 
    <PARAM NAME="_ExtentX" VALUE="4842"> 
    <PARAM NAME="_ExtentY" VALUE="1323"> 
    <PARAM NAME="_StockProps" VALUE="0"> 
</OBJECT> 

Документация для выполнения действий над объектом в ссылках на JavaScript. VBScript и вызывает объект только по id.

<script language="javascript"> 

    function OnClear() { 
     SigPlus1.ClearTablet(); 
    } 

    function OnCancel() { 
     SigPlus1.TabletState = 0; 
    } 

</script> 

Я обнаружил, что этот подход не может найти фактический объект в DOM со всеми связанными методами и атрибутами. Вызов этих функций приводит к:

SigPlus1 неопределен

ИЛИ

SigPlus1.ClearTablet() не является функцией

Как я могу получить реальный объект в функциях javascript, чтобы вызвать его методы и установить его свойства?

Я попытался использовать прототип и jQuery для выбора объекта в DOM.

var vsig = $('SigPlus1'); // prototype 
var vsig = $('#SigPlus1'); // jQuery 
var vsig = document.form.SigPlus1; // document 

Ничего из этого не требуется.

Спасибо!

+0

Hi Roberjo, я попытался запустить свой код, но в моем случае SigData неопределен При нажатии кнопки знак, там нет подписи не появляется в. тег объекта. Я пробовал тестировать в своем DemoOCX.exe, если моя электронная подпись работает, но она отлично работает. Где я ошибся? Спасибо. –

+0

Я бы предложил открыть новый вопрос и не забудьте включить ваш код, связанный с как инициализируется Sig Pad. Спасибо! – Roberjo

ответ

4

Я был в состоянии получить реальный объект, используя document.getElementById(id);

Так что этот код в конечном итоге работает:

var vSig = document.getElementById('SigPlus1'); 

Я надеюсь, что это спасает кого-то от того, чтобы искать этот ответ!

1

мне удалось получить его работу, игнорируя функцию «сценарий» для OnSign() и замена OnClick = «OnSign()» в моей кнопки с:

<INPUT id="SignBtn" name="SignBtn" type="button" value="Sign" onclick="javascript:SigPlus1.TabletState = 1;"> 

(т.е. я просто взял javascript-код из раздела и использовал его напрямую, а не как функцию.

Я полагаю, что мой вопрос связан с вашим ответом, что мне делать с переменной vSig, когда он установлен getElementbyId? предпочитайте оставить код в разделе моего скрипта.

Благодаря

+0

См. мой другой ответ. – Roberjo

2

После vSig инициализации, вы можете вызвать соответствующие функции и доступ к свойствам подписи. Например, кнопка «Сохранить Signature» OnClick должен стрелять что-то вроде этого:

function OnSaveSignature() { 
    var vSig = document.getElementById('SigPlus1'); 
    if(vSig.NumberOfTabletPoints == 0){ // No signature data (Did not sign yet) 
     alert("No Signature Found!"); 
    } else { 
     vSig.TabletState = 0; // Turn off sig tablet 
     vSig.SigCompressionMode = 1; // Set compression mode 
     mySaveSigFunction(vSig.SigString); // Save sig data 
    } // Done! 
} 
Смежные вопросы