【问题标题】:How to access Topaz Signature Pad ActiveX object through javascript?如何通过 javascript 访问 Topaz Signature Pad ActiveX 对象?
【发布时间】:2012-04-19 20:15:41
【问题描述】:

我们正在使用Topaz Systems签名板设备记录文档上的电子签名。

这是公司提供的 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

其中没有一个给出所需的实际对象。

谢谢!

【问题讨论】:

  • 您好 Roberjo,我尝试运行您的代码,但在我的情况下,SigData 未定义。当我单击签名按钮时,对象标签中没有出现签名。如果我的电子签名工作正常,我尝试在我的 DemoOCX.exe 中进行测试,但在那里工作正常。我哪里做错了?谢谢。
  • 我建议打开一个新问题,并确保包含与如何初始化 Sig Pad 相关的代码。谢谢!

标签: javascript activex electronic-signature topaz-signatures


【解决方案1】:

我能够通过使用document.getElementById(id);获得实际对象

所以这段代码最终可以工作了:

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

我希望这可以避免其他人不得不搜索这个答案!

【讨论】:

    【解决方案2】:

    初始化 vSig 后,您可以调用相关函数并访问签名的属性。例如,“保存签名”按钮 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!
    }
    

    【讨论】:

      【解决方案3】:

      我已经设法通过忽略 OnSign() 的“脚本”函数并将我的按钮中的 onclick="OnSign()" 替换为:

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

      (即我只是从该部分获取了 javascript 代码并直接使用它而不是作为函数使用。

      我想我的问题与您的回答有关,一旦变量 vSig 由 getElementbyId 设置,我该怎么办?因为我更愿意将代码留在我的脚本部分。

      谢谢

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-03
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        • 2020-01-31
        • 2022-07-27
        • 2016-05-18
        • 2012-11-18
        相关资源
        最近更新 更多