Javascript ExtJS:将rel属性添加到菜单项

Javascript ExtJS:将rel属性添加到菜单项,javascript,extjs,menuitem,extjs6-classic,Javascript,Extjs,Menuitem,Extjs6 Classic,我们在项目中有一些菜单,其中一些项设置了HREF和hrefTargets。对于这些,我们需要将rel设置为“noopener noreferrer”,以防止出现漏洞。对于具有这种设置的按钮,很简单:只需添加一个带有适当标记和rel的autoEl,rel就会添加到该标记中 菜单项的问题是您必须将autoEl的标记设置为“div”,因为这是菜单项中的顶级元素;但是,实际的href和hrefTarget最终位于DIV中的A标记中,添加autoEl并将标记设置为“DIV”会将rel属性添加到DIV中,这

我们在项目中有一些菜单,其中一些项设置了HREF和hrefTargets。对于这些,我们需要将rel设置为“noopener noreferrer”,以防止出现漏洞。对于具有这种设置的按钮,很简单:只需添加一个带有适当标记和rel的autoEl,rel就会添加到该标记中

菜单项的问题是您必须将autoEl的标记设置为“div”,因为这是菜单项中的顶级元素;但是,实际的href和hrefTarget最终位于DIV中的A标记中,添加autoEl并将标记设置为“DIV”会将rel属性添加到DIV中,这是错误的元素。如果我尝试将标签设置为“a”的autoEl,DIV元素将替换为a元素,从而导致菜单中的渲染问题,该菜单项在错误的位置渲染,并覆盖其他菜单项之一


如何将rel添加到菜单项中,使其最终位于所属的A标记中,而不是DIV标记中?

您是指“ref”还是“rel”属性?无论如何,您可以使用以下脏解决方案:

Ext.create('Ext.menu.Menu', {
        width: 100,
        height: 100,
        floating: false, // usually you want this set to True (default)
        renderTo: Ext.getBody(), // usually rendered by it's containing component
        items: [{
            text: 'google',
            href: "http://www.google.de/",
            hrefTarget: '_blank',
            listeners: {
                render: function(menuItem) {
                    menuItem.getEl().query('a')[0].setAttribute('rel', 'noopener noreferrer');
                }
            }
        }, {
            text: 'text item'
        }, {
            text: 'plain item',
            plain: true
        }]
    });

С你能给出一个示例代码吗?万分感谢!这正是我需要的+1和接受。