0

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

这是公司提供的 javascript 使用演示:

基于 Javascript 的 HTML 互联网签名演示下载

签名板通过<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

这些都没有给出所需的实际对象。

谢谢!

4

3 回答 3

4

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

所以这段代码最终起作用了:

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

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

于 2012-04-20T13:55:32.487 回答
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!
}
于 2013-04-01T14:33:53.497 回答
1

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

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

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

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

谢谢

于 2013-03-06T17:09:13.523 回答