htmlpage.window.navigate会在每次点击时打开新页面或新标签页

问题描述 投票:1回答:3

在我的Silverlight应用程序中,我点击一下按钮,每次单击它都会调用此代码

 private void Help_Click(object sender, RoutedEventArgs e)
  {
    HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_blank");
  }

但我的问题是每次点击它都在浏览器中打开一个新的选项卡或窗口。

我怎么能通过刷新第一个打开的页面或带有该URL的选项卡来防止这种情况。我想每次都防止打开多个标签。

(最终我想传递一个动态网址来导航ex:第一次www.stackoverflow.com/questions第二次我想用www.stackoverflow.com/answers刷新同一个打开的页面)。

c# .net silverlight
3个回答
1
投票

非法的_blank Use _self

例如:

不要使用它

HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_blank");

你只需使用它

HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_self");

可能的值:

  • _blank - 目标网址将在新窗口中打开
  • _self - 目标URL将在单击的框架中打开
  • _search - 目标网址将在搜索窗格中打开
  • _top - 目标网址将在整个窗体中打开
  • _parent - 目标URL将在父框架集中打开

根据你的评论,你可以做出另一种方式。如果您希望可以使用它。

private void Help_Click(object sender, RoutedEventArgs e)
{
        // Checking the Condition
        if (Session["hasvalue"].ToString() == "Clicked") // Second click onwards current TAB itself
        {
            HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_self");
        }
        else // First Time it will be opened in New TAB
        {
            HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_blank");
        }

        // Assign this value to session
        Session["hasvalue"] = "Clicked";
}

希望你能有所了解。,


1
投票

你可以实现使用

HtmlPage.Window.Navigate(新的Uri(“https://stackoverflow.com/”),“xyz”);

其中xyz是一个随机词。它可以替换为任何单词


0
投票

如果您不希望它打开新选项卡,请从"_blank"构造函数中删除Uri。所以改变

HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_blank");

HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"));

有关详细信息,请参阅W3Schools目标解释。

"_self"是默认值,但您可以使用

HtmlPage.Window.Navigate(new Uri("http://stackoverflow.com/"), "_self");

使事情更明确。

© www.soinside.com 2019 - 2024. All rights reserved.