我有一个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'
})
}
});
});
答案 0 :(得分:1)
据我所知,你实际上不能。
菜单中显示在新选项卡中打开的原因是菜单项呈现为链接(<a>
),浏览器负责该行为。但是你没有普通的链接,而是附加了JS处理程序的链接。当您单击一个默认行为时,您将使用表单执行一些POST请求。当你点击'在新标签页中打开'时JS将无法正常工作,你真的无法做任何事情。
您可以做的是通过在菜单项而不是POST中提供href
来使用GET请求并删除表单。然后它会工作。