Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态删除XUL菜单_Javascript_Firefox_Firefox Addon_Xul - Fatal编程技术网

Javascript 动态删除XUL菜单

Javascript 动态删除XUL菜单,javascript,firefox,firefox-addon,xul,Javascript,Firefox,Firefox Addon,Xul,我遇到一个问题,无法删除在扩展中动态创建的菜单。我可以使用document.getElementById或使用下面的jquery工具获取菜单对象。基本上,用户单击“删除”菜单项,它应该删除父菜单(有两个父菜单,因为它进入菜单>弹出窗口>菜单项(单击)) 警报为我要删除的内容吐出正确的idremoveObj.remove()使扩展崩溃。最后一行似乎没有做任何事情(除非第二次单击remove时它再也找不到id),但是它仍然在UI中可见 代码: 这不是因为jquery。我已经写了这篇文章,它在执行后完

我遇到一个问题,无法删除在扩展中动态创建的菜单。我可以使用
document.getElementById
或使用下面的jquery工具获取菜单对象。基本上,用户单击“删除”菜单项,它应该删除父菜单(有两个父菜单,因为它进入菜单>弹出窗口>菜单项(单击))

警报为我要删除的内容吐出正确的
id
<代码>removeObj.remove()使扩展崩溃。最后一行似乎没有做任何事情(除非第二次单击remove时它再也找不到
id
),但是它仍然在UI中可见

代码:

这不是因为jquery。我已经写了这篇文章,它在执行后完全禁用右键单击菜单(但在if情况下返回正确的id位置)

var main menu=document.getElementById('rclickmenus\u MenuPopupContainer');
var toRemove=document.getElementById(“rclickMenu_u2;”+main);
对于(变量i=0;i
执行以下操作:


看起来您正在使用jQuery代码,但浏览器代码中不存在jQuery,那么为什么要使用jQuery代码呢?您可以在代码中包含jQuery以便能够使用它。即使我不使用它,它也不起作用。例如,var main menu=document.getElementById('main menu');removeChild(document.getElementById('clickeditem');呵呵?您是否在使用jQuery?如果您在使用jQuery,那么您就不应该使用jQuery,这可能就是您的代码使用jQuery的原因。但是,即使我不使用它,并且像我展示的那样使用document.getElementById,它也不起作用。换句话说,无论我是否使用jquery,我都不能删除菜单项。你知道如何删除它吗?这会使我的右键单击菜单崩溃,与我在原始问题中添加的第二段代码相同。我不知道为什么会这样。我做的for循环显示我有一个正确的根元素,我试图删除的元素是它的一个子元素,但是当我实际删除它时,没有任何效果。我做了,这是在问题中,请看第二个代码部分。你想看多少?相当长
var jObj = $(menuObject);
var removeObj = $(jObj).parent().parent();
var id = removeObj.attr('id');
alert(id);
//removeObj.remove();           
$(removeObj).parent().removeChild(document.getElementById(id));
                var mainMenu = document.getElementById('rclickMenu_MenuPopupContainer');
                var toRemove = document.getElementById("rclickMenu_"+main);
                for(var i=0; i < mainMenu.children.length; i++){
                    if(mainMenu.children[i].getAttribute('id') == toRemove.getAttribute('id')){
                        alert(toRemove.getAttribute('id'));
                        //mainMenu.removeItemAt(i); 
                        mainMenu.removeChild(toRemove);
                    }
                }
let (ele = document.getElementById(id)) {
    ele.parentNode.removeChild(ele);
}