ExtJs 拆分按钮菜单 - 在新选项卡中打开

ExtJs Splitbutton menu - Open in a new tab

本文关键字:选项 按钮 拆分 菜单 新选项 ExtJs      更新时间:2023-09-26
我有一个 ExtJs

(ExtJs 4.2) 拆分按钮,它向下下拉,为我提供了几个我选择的选项。每个选项都根据我的业务逻辑重定向。

我的问题是:当我右键单击其中一个选项并单击在新选项卡中打开时,同一页面将在新选项卡中打开,并在同一 URL 的末尾附加"#"。如何使其正常工作?谢谢。

我的 ExtJs 代码 -

Ext.onReady(function () {
var but = new Ext.FormPanel({
    items: [{
        xtype: 'splitbutton',
        text: 'Choose an action',
        width: 250,
        scale: 'medium',
        rowspan: 2,
        renderTo: Ext.getBody(),
        margin: '5 15 15 510',
        border: true,
        handler: function () {
            Ext.Msg.alert('<center><br/>Select an option from drop down menu!<center>');
        },
        menu: [{
            text: 'Create Student Record',
            anchor: '100%',
            handler: function () {

                but.getForm().doAction('standardsubmit', {
                    target: '<_s></_s>elf',
                    method: 'POST',
                    standardSubmit: true,
                    formBind: true,
                    url: 'createrecord.jsp'
                })
            }
        }, {
            text: 'Create Class Details',
            anchor: '100%',
            handler: function () {

                but.getForm().doAction('standardsubmit', {
                    target: '_self',
                    method: 'POST',
                    standardSubmit: true,
                    formBind: true,
                    url: 'classrecord.jsp'
                })
            }
        }]
    });
    Ext.create('Ext.Button', {
        text: 'Logout',
        margin: '-85 10 10 1200',
        scale: 'medium',
        renderTo: Ext.getBody(),
        handler: function () {
            but.getForm().doAction('standardsubmit', {
                target: '_self',
                method: 'POST',
                standardSubmit: true,
                url: 'LogoutServlet'
            })
        }

    });
});

据我所知,你实际上不能。

在新

选项卡中打开显示在菜单中的原因是菜单项呈现为链接(<a>),浏览器负责该行为。但是您没有普通的链接,而是附加了 JS 处理程序的链接。当您单击一个默认行为时,您将使用表单执行一些 POST 请求。当您单击"在新选项卡中打开"时,JS将无法正常工作,您真的无法对此做任何事情。

您可以做的是通过在菜单项而不是 POST 中提供href来使用 GET 请求并摆脱表单。然后它就会起作用。