我在我的 asp 页面上添加了一个按钮,我正在服务器端执行一些进程,然后将链接重定向到另一个页面。
我在页面中所做的是调用 asp:Button
上的方法OnClientClick
我分配 aspnetForm.target='_blank'
的事件在不同选项卡中导航页面。
ASP.NET 代码:
<asp:Button ID='btn' runtat='server' OnClientClick='ShowPage();' Text='Show Page' />
JavaScript 代码:
function ShowPage() {
aspnetForm.target = '_blank';
}
我正在使用Response.Redirect()
导航页面的方法。仅在服务器端验证所需的验证后才会调用此方法。
C#.NET 代码
If (ValidData())
{
Response.Redirect('myPage.aspx?preview=true', True);
}
验证代码非常庞大,并且在验证过程中还执行了一些进一步的过程。所以,我不能使用WebMethod
对于 ajax
打电话。
一切正常,但问题是还有一些其他链接和按钮。因此,当我单击其中任何一个时,页面也会针对该特定请求进行重定向,但我不想这样做。发生这种情况是因为 asp 表单中仍然存在“aspnetForm.target='_blank``”,并且它也会对其他链接执行相同的操作。
我的要求是仅当按下特定按钮时才应在新选项卡中导航页面。其他导航过程应该在同一页面完成。我想知道有什么方法可以用来删除 target = '_blank'
回发后。
我无法使用rel='external'
因为我没有使用anchor<a>
标签。我正在使用asp:Button
它还处理一些服务器端事件。
或者有没有其他方法可以让我在新选项卡中导航页面而不使用 target='_blank'
方法?
编辑:
目前我正在使用Page.ClientScript.RegisterStartupScript()
执行我的Popup
窗口脚本。但是,当弹出窗口阻止程序打开时,它不起作用。所以,我必须选择另一种方式。
Page.ClientScript.RegisterStartupScript(Me.GetType(), "OpenWindow", "window.open('myPage.aspx?preview=true','_newtab');", True)
最佳答案
我已经使用 setTimeout()
方法解决了我的问题。我将在 1000
毫秒后将表单属性 target
重置为 _self
。
Javascript代码:
function ShowPage() {
aspnetForm.target = "_blank";
setTimeout(function() {
aspnetForm.target = "_self";
}, 1000);
}
ASP.NET 代码
<asp:Button ID='btn' runtat='server' OnClientClick='ShowPage();' Text='Show Page' />
而且,我可以使用现有的方法 Response.Redirect()
,该方法不会触发 Popup Blocker
消息。
导航新选项卡后,它将把 form
的 target
属性重置为 _self
。
关于javascript - 如何在回发事件后删除目标 ='_blank'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30093131/