如何在回发事件后删除target ='_ blank'?

时间:2015-05-07 06:07:15

标签: javascript asp.net response.redirect

我在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调用。

一切正常,但问题是还有一些其他的链接和按钮。因此,当我点击其中任何一个页面时,页面也会重定向该特定请求,我不想这样做。这是因为`aspnetForm.target ='_ blank``仍然存在于asp表单中,它也会对其他链接执行相同的操作。

我的要求是,只有在按下特定按钮时才应在新选项卡中导航页面。其他导航过程应该是同一页面。我想知道是否有任何方法可以用于在回发后删除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)

1 个答案:

答案 0 :(得分:3)

我已使用setTimeout()方法解决了我的问题。我在target毫秒后将表单属性_self重置为1000

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消息。

导航新标签后,它会将target的{​​{1}}属性重置为form