|
|
|
|
//右键菜单
|
|
|
|
|
|
|
|
|
|
/******************************通用接口******************************/
|
|
|
|
|
/**
|
|
|
|
|
* 验章
|
|
|
|
|
*/
|
|
|
|
|
function $Verify($_$CurStampID) {
|
|
|
|
|
oMenu.style.display = "none";
|
|
|
|
|
// 获取orgdata方法1:直接从签名之后储存的数据中获取,对签章之后修改的原文无效
|
|
|
|
|
// var orgdata = $_$CurOrgData[$_$CurStampID];
|
|
|
|
|
|
|
|
|
|
// 获取orgdata方法2:通过“前缀+印章页面ID”的方式获取,这种方式要求如果页面有多个原文,所有原文所在的容器ID都要以“前缀+印章页面ID”的方式命名
|
|
|
|
|
var orgdata;
|
|
|
|
|
var OrgDataContainerName = $_$OrgDataContainerNameHead + $_$CurStampID;
|
|
|
|
|
if (document.getElementById(OrgDataContainerName)) {
|
|
|
|
|
orgdata = document.getElementById(OrgDataContainerName).value;
|
|
|
|
|
} else {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取orgdata方法3:对于已集成用户,如果原文容器ID命名不是“前缀+印章页面ID”的方式,可以存入数组中
|
|
|
|
|
// var OrgDataContainerArr = ["originData1", "originData2", "originData3", "originData4", "originData5"];
|
|
|
|
|
// var OrgDataContainerName = OrgDataContainerArr[$_$CurStampID - 1];
|
|
|
|
|
|
|
|
|
|
if (document.getElementById(OrgDataContainerName)) {
|
|
|
|
|
orgdata = document.getElementById(OrgDataContainerName).value;
|
|
|
|
|
} else {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$_$CurOrgData[$_$CurStampID] = orgdata;
|
|
|
|
|
var signdata = $_$CurSignData[$_$CurStampID];
|
|
|
|
|
BWS_Verify(orgdata, signdata, function(ret){
|
|
|
|
|
var retObj = {retVal:ret.retVal};
|
|
|
|
|
$VerifyCallback(retObj,$_$CurStampID);
|
|
|
|
|
}, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 撤销签章
|
|
|
|
|
*/
|
|
|
|
|
function $RemoveSeal($_$CurStampID) {
|
|
|
|
|
oMenu.style.display = "none";
|
|
|
|
|
if ($_$is_windows) {
|
|
|
|
|
$RemoveSealFunc($_$CurStampID);
|
|
|
|
|
} else {
|
|
|
|
|
showLogin($RemoveSealFunc($_$CurStampID), 2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$("#qm"+$_$CurStampID).css("display","");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function $RemoveSealFunc($_$CurStampID) {
|
|
|
|
|
|
|
|
|
|
var signdata = $_$CurSignData[$_$CurStampID];
|
|
|
|
|
var certID = $_$CurCertID[$_$CurStampID];
|
|
|
|
|
BWS_Remove(signdata, certID, function(ret){
|
|
|
|
|
var retObj = {retVal:ret.retVal};
|
|
|
|
|
$RemoveCallback(retObj,$_$CurStampID);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取证书信息
|
|
|
|
|
*/
|
|
|
|
|
function $ShowUserCerInfo() {
|
|
|
|
|
oMenu.style.display = "none";
|
|
|
|
|
var signdata = $_$CurSignData[$_$CurStampID];
|
|
|
|
|
BWS_GetCertInfo(signdata, function(ret){
|
|
|
|
|
if(ret.retVal) {
|
|
|
|
|
//显示证书信息
|
|
|
|
|
alert(ret.retVal);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取签章时间
|
|
|
|
|
*/
|
|
|
|
|
function $ShowSignTime() {
|
|
|
|
|
oMenu.style.display = "none";
|
|
|
|
|
var signdata = $_$CurSignData[$_$CurStampID];
|
|
|
|
|
BWS_GetSignTime(signdata, function(ret){
|
|
|
|
|
if(ret.retVal) {
|
|
|
|
|
//显示签章时间
|
|
|
|
|
alert(ret.retVal);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取关于信息
|
|
|
|
|
*/
|
|
|
|
|
function $GetVersion() {
|
|
|
|
|
oMenu.style.display = "none";
|
|
|
|
|
BWS_GetVersion(function(ret){
|
|
|
|
|
alert("BJCA网页签章V" + ret.retVal);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除之前的右键菜单
|
|
|
|
|
*/
|
|
|
|
|
function deleteSigMenuDiv() {
|
|
|
|
|
var sigMenuDivName = "sigMenu";
|
|
|
|
|
var my = document.getElementById(sigMenuDivName);
|
|
|
|
|
if (my != null)
|
|
|
|
|
my.parentNode.removeChild(my);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建右键菜单
|
|
|
|
|
*/
|
|
|
|
|
var oMenu;
|
|
|
|
|
function ESeaL_CreateSignMenu($_$CurStampID) {
|
|
|
|
|
deleteSigMenuDiv();
|
|
|
|
|
|
|
|
|
|
var sigMenuDiv = document.createElement("div");
|
|
|
|
|
var sigMenuDivName = "sigMenu";
|
|
|
|
|
sigMenuDiv.setAttribute("id", sigMenuDivName);
|
|
|
|
|
sigMenuDiv.className = "contextMenu";
|
|
|
|
|
//.getElementById("qm"+$_$CurStampID)
|
|
|
|
|
document.body.appendChild(sigMenuDiv);
|
|
|
|
|
var ulObj = document.createElement("ul");
|
|
|
|
|
var ulObjID = "ulo";
|
|
|
|
|
ulObj.setAttribute("id", ulObjID);
|
|
|
|
|
document.getElementById(sigMenuDivName).appendChild(ulObj); //在提示框div中添加标题栏对象title
|
|
|
|
|
/*
|
|
|
|
|
var liObj = document.createElement("li");
|
|
|
|
|
liObj.innerHTML = "签章";
|
|
|
|
|
document.getElementById(ulObjID).appendChild(liObj);//在提示框div中添加标题栏对象title
|
|
|
|
|
*/
|
|
|
|
|
var liObj2 = document.createElement("li");
|
|
|
|
|
liObj2.setAttribute("id", "liObj2");
|
|
|
|
|
liObj2.innerHTML = "验章";
|
|
|
|
|
document.getElementById(ulObjID).appendChild(liObj2); //在提示框div中添加标题栏对象title
|
|
|
|
|
var liObj3 = document.createElement("li");
|
|
|
|
|
liObj3.setAttribute("id", "liObj3");
|
|
|
|
|
liObj3.innerHTML = "证书信息";
|
|
|
|
|
document.getElementById(ulObjID).appendChild(liObj3); //在提示框div中添加标题栏对象title
|
|
|
|
|
var liObj4 = document.createElement("li");
|
|
|
|
|
liObj4.setAttribute("id", "liObj4");
|
|
|
|
|
liObj4.innerHTML = "签章时间";
|
|
|
|
|
document.getElementById(ulObjID).appendChild(liObj4); //在提示框div中添加标题栏对象title
|
|
|
|
|
var liObj5 = document.createElement("li");
|
|
|
|
|
liObj5.setAttribute("id", "liObj5");
|
|
|
|
|
liObj5.innerHTML = "撤销签章";
|
|
|
|
|
document.getElementById(ulObjID).appendChild(liObj5); //在提示框div中添加标题栏对象title
|
|
|
|
|
var liObj6 = document.createElement("li");
|
|
|
|
|
liObj6.setAttribute("id", "liObj6");
|
|
|
|
|
liObj6.innerHTML = "关于";
|
|
|
|
|
document.getElementById(ulObjID).appendChild(liObj6); //在提示框div中添加标题栏对象title
|
|
|
|
|
oMenu = document.getElementById(sigMenuDivName); //"picDragMenu"
|
|
|
|
|
var aUl = oMenu.getElementsByTagName("ul");
|
|
|
|
|
var aLi = oMenu.getElementsByTagName("li");
|
|
|
|
|
var showTimer = (hideTimer = null);
|
|
|
|
|
var i = 0;
|
|
|
|
|
var maxWidth = (maxHeight = 0);
|
|
|
|
|
var aDoc = [document.documentElement.offsetWidth, document.documentElement.offsetHeight];
|
|
|
|
|
oMenu.style.display = "none";
|
|
|
|
|
/*oMenu.onmouseover = function () {
|
|
|
|
|
oMenu.style.display = "block";
|
|
|
|
|
};*/
|
|
|
|
|
// 这里如果判断移出,会在移入的时候触发一次移出,导致菜单消失。
|
|
|
|
|
// 不判断移出,需要用户手动点击了菜单或页面其他位置菜单才消失。
|
|
|
|
|
// 所以暂不判断移出。2020-3-6 zc
|
|
|
|
|
//oMenu.onmouseout = function () {
|
|
|
|
|
// oMenu.style.display = "none";
|
|
|
|
|
//};
|
|
|
|
|
//var Seal_Pic_Main_Div_Name = "";
|
|
|
|
|
//var Seal_Pic_Div_Name = "";
|
|
|
|
|
//var Signature_Element_Name = "";
|
|
|
|
|
for (i = 0; i < aLi.length; i++) {
|
|
|
|
|
//为含有子菜单的li加上箭头
|
|
|
|
|
aLi[i].getElementsByTagName("ul")[0] && (aLi[i].className = "sub");
|
|
|
|
|
//鼠标移入
|
|
|
|
|
aLi[i].onmouseover = function() {
|
|
|
|
|
var oThis = this;
|
|
|
|
|
|
|
|
|
|
var oUl = oThis.getElementsByTagName("ul");
|
|
|
|
|
//鼠标移入样式
|
|
|
|
|
oThis.className += " active";
|
|
|
|
|
//显示子菜单
|
|
|
|
|
if (oUl[0]) {
|
|
|
|
|
|
|
|
|
|
clearTimeout(hideTimer);
|
|
|
|
|
showTimer = setTimeout(function() {
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < oThis.parentNode.children.length; i++) {
|
|
|
|
|
oThis.parentNode.children[i].getElementsByTagName("ul")[0] && (oThis.parentNode.children[i].getElementsByTagName("ul")[0].style.display = "none");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
oUl[0].style.display = "block";
|
|
|
|
|
oUl[0].style.top = oThis.offsetTop + "px";
|
|
|
|
|
oUl[0].style.left = oThis.offsetWidth + "px";
|
|
|
|
|
setWidth(oUl[0]);
|
|
|
|
|
//最大显示范围
|
|
|
|
|
maxWidth = aDoc[0] - oUl[0].offsetWidth;
|
|
|
|
|
maxHeight = aDoc[1] - oUl[0].offsetHeight;
|
|
|
|
|
//防止溢出
|
|
|
|
|
maxWidth < getOffset.left(oUl[0]) && (oUl[0].style.left = -oUl[0].clientWidth + "px");
|
|
|
|
|
maxHeight < getOffset.top(oUl[0]) && (oUl[0].style.top = -oUl[0].clientHeight + oThis.offsetTop + oThis.clientHeight + "px")
|
|
|
|
|
}, 300);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
//鼠标移出
|
|
|
|
|
aLi[i].onmouseout = function() {
|
|
|
|
|
var oThis = this;
|
|
|
|
|
var oUl = oThis.getElementsByTagName("ul");
|
|
|
|
|
//鼠标移出样式
|
|
|
|
|
oThis.className = oThis.className.replace(/\s?active/, "");
|
|
|
|
|
clearTimeout(showTimer);
|
|
|
|
|
hideTimer = setTimeout(function() {
|
|
|
|
|
for (i = 0; i < oThis.parentNode.children.length; i++) {
|
|
|
|
|
oThis.parentNode.children[i].getElementsByTagName("ul")[0] && (oThis.parentNode.children[i].getElementsByTagName("ul")[0].style.display = "none");
|
|
|
|
|
}
|
|
|
|
|
}, 300);
|
|
|
|
|
};
|
|
|
|
|
//鼠标点击
|
|
|
|
|
aLi[i].onclick = function () {
|
|
|
|
|
|
|
|
|
|
var oThis = this;
|
|
|
|
|
if ($_$WebSign_CurrentObj) {
|
|
|
|
|
if (oThis.innerText == "签章" || oThis.innerHTML == "签章") {
|
|
|
|
|
BWS_DirectSign($_$CurCertID[$_$CurStampID], $_$CurSealID[$_$CurStampID], $_$CurOrgData[$_$CurStampID], $DragSignCallback);
|
|
|
|
|
} else if (oThis.innerText == "验章" || oThis.innerHTML == "验章") {
|
|
|
|
|
$Verify($_$CurStampID);
|
|
|
|
|
} else if (oThis.innerText == "证书信息" || oThis.innerHTML == "证书信息") {
|
|
|
|
|
$ShowUserCerInfo();
|
|
|
|
|
} else if (oThis.innerText == "签章时间" || oThis.innerHTML == "签章时间") {
|
|
|
|
|
$ShowSignTime();
|
|
|
|
|
} else if (oThis.innerText == "撤销签章" || oThis.innerHTML == "撤销签章") {
|
|
|
|
|
$RemoveSeal($_$CurStampID);
|
|
|
|
|
} else if (oThis.innerText == "关于" || oThis.innerHTML == "关于") {
|
|
|
|
|
$GetVersion();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
//自定义右键菜单
|
|
|
|
|
document.oncontextmenu = function(event) {
|
|
|
|
|
var event = event || window.event;
|
|
|
|
|
var srcObj = event.srcElement ? event.srcElement : event.target;
|
|
|
|
|
var srcObjName = srcObj.id.substr(0, 7);
|
|
|
|
|
var stampID = srcObj.id.substr(7);
|
|
|
|
|
if (stampID != "") {
|
|
|
|
|
if (srcObjName == "sealImg") {
|
|
|
|
|
if ($_$bPos) {
|
|
|
|
|
$_$CurStampID = stampID;
|
|
|
|
|
oMenu.style.display = "block";
|
|
|
|
|
/*获取当前鼠标右键按下后的位置,据此定义菜单显示的位置*/
|
|
|
|
|
var rightedge = document.body.clientWidth - event.clientX;
|
|
|
|
|
var bottomedge = document.body.clientHeight - event.clientY;
|
|
|
|
|
/*如果从鼠标位置到容器右边的空间小于菜单的宽度,就定位菜单的左坐标(Left)为当前鼠标位置向左一个菜单宽度*/
|
|
|
|
|
if (rightedge < oMenu.offsetWidth) oMenu.style.left = document.body.scrollLeft + event.clientX - oMenu.offsetWidth + "px";
|
|
|
|
|
else
|
|
|
|
|
/*否则,就定位菜单的左坐标为当前鼠标位置*/
|
|
|
|
|
oMenu.style.left = document.body.scrollLeft + event.clientX + "px";
|
|
|
|
|
/*如果从鼠标位置到容器下边的空间小于菜单的高度,就定位菜单的上坐标(Top)为当前鼠标位置向上一个菜单高度*/
|
|
|
|
|
if (bottomedge < oMenu.offsetHeight) oMenu.style.top = document.body.scrollTop + event.clientY - oMenu.offsetHeight + "px";
|
|
|
|
|
else
|
|
|
|
|
/*否则,就定位菜单的上坐标为当前鼠标位置*/
|
|
|
|
|
oMenu.style.top = document.body.scrollTop + event.clientY + "px";
|
|
|
|
|
/*
|
|
|
|
|
oMenu.style.top = event.y-2 + "px";
|
|
|
|
|
oMenu.style.left = event.x-2 + "px";
|
|
|
|
|
*/
|
|
|
|
|
setWidth(aUl[0]);
|
|
|
|
|
liObj2.style.display = "none";
|
|
|
|
|
liObj3.style.display = "none";
|
|
|
|
|
liObj4.style.display = "none";
|
|
|
|
|
var signdata = $_$CurSignData[stampID];
|
|
|
|
|
if (signdata) {
|
|
|
|
|
liObj2.style.display = "block";
|
|
|
|
|
liObj3.style.display = "block";
|
|
|
|
|
liObj4.style.display = "block";
|
|
|
|
|
}
|
|
|
|
|
//最大显示范围
|
|
|
|
|
maxWidth = aDoc[0] - oMenu.offsetWidth;
|
|
|
|
|
maxHeight = aDoc[1] - oMenu.offsetHeight;
|
|
|
|
|
//防止菜单溢出
|
|
|
|
|
//oMenu.offsetTop > maxHeight && (oMenu.style.top = maxHeight + "px");
|
|
|
|
|
//oMenu.offsetLeft > maxWidth && (oMenu.style.left = maxWidth + "px");
|
|
|
|
|
oMenu.target = srcObj.id;
|
|
|
|
|
} else {
|
|
|
|
|
bSignReady = false;
|
|
|
|
|
document.getElementById(sealDivName).style.display = 'none';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
//点击隐藏菜单
|
|
|
|
|
/*document.onmousedown = function (event) {
|
|
|
|
|
var event = event || window.event;
|
|
|
|
|
var srcObj = event.srcElement ? event.srcElement : event.target;
|
|
|
|
|
var srcObjName = srcObj.id.substr(0, 5);
|
|
|
|
|
if (srcObjName != "liObj") {
|
|
|
|
|
oMenu.style.display = "none";
|
|
|
|
|
}
|
|
|
|
|
};*/
|
|
|
|
|
//取li中最大的宽度, 并赋给同级所有li
|
|
|
|
|
function setWidth(obj) {
|
|
|
|
|
maxWidth = 0;
|
|
|
|
|
for (i = 0; i < obj.children.length; i++) {
|
|
|
|
|
var oLi = obj.children[i];
|
|
|
|
|
var iWidth = oLi.clientWidth - parseInt(oLi.currentStyle ? oLi.currentStyle["paddingLeft"] : getComputedStyle(oLi, null)["paddingLeft"]) * 2;
|
|
|
|
|
if (iWidth > maxWidth)
|
|
|
|
|
maxWidth = iWidth;
|
|
|
|
|
}
|
|
|
|
|
for (i = 0; i < obj.children.length; i++)
|
|
|
|
|
obj.children[i].style.width = maxWidth + "px";
|
|
|
|
|
}
|
|
|
|
|
}
|