我们正在使用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未定义
OR
SigPlus1.ClearTablet()不是函数
如何在javascript函数中获取实际对象以调用其方法并设置其属性?
我尝试使用prototype和jQuery来选择DOM中的对象。
var vsig = $('SigPlus1'); // prototype
var vsig = $('#SigPlus1'); // jQuery
var vsig = document.form.SigPlus1; // document
其中没有一个能够提供所需的实际对象。
谢谢!
答案 0 :(得分:4)
我可以使用document.getElementById(id);
所以这段代码最终起作用了:
var vSig = document.getElementById('SigPlus1');
我希望这可以让其他人不必搜索这个答案!
答案 1 :(得分: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!
}
答案 2 :(得分:1)
我设法通过忽略OnSign()的“脚本”功能并用我的按钮替换onclick =“OnSign()”来实现它的工作:
<INPUT id="SignBtn" name="SignBtn" type="button" value="Sign" onclick="javascript:SigPlus1.TabletState = 1;">
(即我刚刚从该部分获取了javascript代码并直接使用它而不是作为函数。
我想我的问题与你的答案有关,一旦由getElementbyId设置,我该如何处理变量vSig?因为我更愿意将代码保留在我的脚本部分中。
由于