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);
}