You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

94 lines
3.2 KiB

/* class2context.js
creator: Arnau
July 2016
version: v0.1
usage:
class2context(
'className',
"title",
[["option1", "functionoption1()"], ["option 2","functionoption2()"]]
);
*/
//if the div 'contextMenus' exist, deletes
if(document.getElementById('contextMenus'))
{
removeElemById('contextMenus');
}
//creates the div where the context menus will place
document.body.innerHTML+="<div id='contextMenus'></div>";
//
function removeElemById(id) {
return (elem=document.getElementById(id)).parentNode.removeChild(elem);
}
function class2context(classgiv, title, options){
classgiv=JSON.parse(JSON.stringify(classgiv));
if(document.getElementById("context"+classgiv))
{
//toastr.success("alreadyExist");
}else{
var aux="";
aux+="<div id='context"+classgiv+"' class='contextMenu'>";
aux+=" <ul class='c2c-dropdown c2c-border' style='display:block;position:static;margin-bottom:5px;'>";
aux+="<div class='contextTitle'>" + title + "</div>";
for(var i=0; i<options.length; i++)
{
//aux+=" <a onmousedown='"+options[i][1]+";' href='javascript:void(0);'>"+options[i][0]+"</a>";
aux+=" <a onmousedown='"+options[i][1]+"; ContextMenus();' href='javascript:void(0);'>"+options[i][0]+"</a>";
}
aux+=" </ul>";
aux+="</div>";
document.getElementById('contextMenus').innerHTML+=aux; //adds the div context menu into the context menus div place
}
for(var i=0; i<document.getElementsByClassName(classgiv).length; i++)
{
classgiv=JSON.parse(JSON.stringify(classgiv));
//toastr.info(document.getElementsByClassName(classgiv)[i].oncontextmenu);
document.getElementsByClassName(classgiv)[i].addEventListener("contextmenu", function(e){
// Avoid the real one
e.preventDefault();
e.stopPropagation();
setTimeout(function(){
//classaux=this.className.split(" ")[0];
document.getElementById('context'+classgiv).style.display='block';
document.getElementById('context'+classgiv).style.left=e.pageX + "px";
document.getElementById('context'+classgiv).style.top=e.pageY + "px";
}, 150);
});
/*document.getElementsByClassName(classgiv)[i].oncontextmenu+= function(e){
// Avoid the real one
e.preventDefault();
setTimeout(function(){
//classaux=this.className.split(" ")[0];
document.getElementById('context'+classgiv).style.display='block';
document.getElementById('context'+classgiv).style.left=e.pageX + "px";
document.getElementById('context'+classgiv).style.top=e.pageY + "px";
}, 150);
};*/
}
document.body.addEventListener("mousedown", function(e){
// Avoid the real one
//e.preventDefault();
if(document.getElementById('context'+classgiv))
{
setTimeout(function(){
document.getElementById('context'+classgiv).style.display='none';
}, 70);
//ContextMenus();
}
return false;
}, false);
}