凯神Jump 发表于 2022-2-17 09:29:38

禁用浏览器右键菜单,并自定义命令,示例

本帖最后由 凯神Jump 于 2022-2-17 09:31 编辑

大家先看效果:



可以通过按钮的名称,或者按钮的类名进行自定义命令:


JavaScript脚本(在页面加载时执行)
var page = Forguncy.Page;
var fuzhu1 = page.getCell("fuzhu1");
var fuzhu2 = page.getCell("fuzhu2");

document.oncontextmenu = function(e){
    e.preventDefault();

    if(e.button ==2 && getFGCNAME(e.target)=="mybtn"){
      fuzhu1.setValue(fuzhu1.getValue()+1);
    }
    if(e.button ==2 && checkElementClassName(e.target,"mybtnclass")){
      fuzhu2.setValue(fuzhu2.getValue()+1);
    }
};

//用于根据控件名判断的情况
var getFGCNAME = function(element)
{
    if(element ==null) {return "undefined";}
    else if(element.nodeName=="#document") {return "undefined";}
    else if(element.getAttribute("fgcname")==null)
    {
      if(element.parentNode==null) {return "undefined";}
      else {return getFGCNAME(element.parentNode);}
    }
    else{return element.getAttribute("fgcname");}
};

//用于根据类名判断的情况
var checkElementClassName = function(element,className)
{
    if(element ==null) {return false;}
    else if(element.nodeName=="#document") {return false;}
    else if(element.classList.contains(className))
    {
      return 1;
    }
    else
    {
      if(element.parentNode==null) {return false;}
      else {return checkElementClassName(element.parentNode,className);}
    }
};
说一下js的思路:
· 根据控件名:
1. 如下图,虽然我在按钮上定义了mybtn名称,但是实际点击"点击测试"文本时,可能是mybtn的内部元素
2. 所以使用递归的方式抓取到点击元素的fgcname,判断是否为mybtn,到最顶层时都没找到fgcname则返回undefined

· 根据元素类名:
一样的道理,也是要递归判断其是否含有mybtnclass类名




附件供参考~


Epimenides 发表于 2022-2-19 12:22:32

:hjyzw:实用 下载来试试 哈哈

吴小胖 发表于 2022-2-19 14:59:13

凯神V5 赞

xhzxh1982 发表于 2022-2-21 21:33:41

好厉害(ω)嘿

Alink 发表于 2022-3-4 18:08:30

这是根据你提供地方法做的树形图鼠标右键菜单,建议作者把他封装为一个鼠标右键插件

muto 发表于 2022-3-5 11:22:04

Alink 发表于 2022-3-4 18:08
这是根据你提供地方法做的树形图鼠标右键菜单,建议作者把他封装为一个鼠标右键插件

你这是活字格做的?

洗尿布的 发表于 2022-3-5 12:02:49

凯神牛逼

凯神Jump 发表于 2022-3-7 19:42:38

本帖最后由 凯神Jump 于 2022-3-7 19:44 编辑

Alink 发表于 2022-3-4 18:08
这是根据你提供地方法做的树形图鼠标右键菜单,建议作者把他封装为一个鼠标右键插件
能对你项目有帮助,甚是荣幸!
————————————
封装成插件怕是没办法哦,难不成改写所有官方的控件嘛~~


mrguo6221 发表于 2023-3-7 14:36:05

请问如果想单纯的禁用页面右键菜单,能不能简化一下呀?
页: [1]
查看完整版本: 禁用浏览器右键菜单,并自定义命令,示例