Как открыть документ в отдельном окне с карты сайта - PullRequest
5 голосов
/ 06 мая 2010

Я надеялся открыть документ в элементе управления меню, используя карту сайта. Я использую следующий код в карте сайта, но получаю сообщение об ошибке. Я хотел бы иметь возможность щелкнуть по пункту меню, открыть его образец документа в новом окне, но не дать исходной странице перейти на новое место (по сути, ничего не делать на главной странице.)

<siteMapNode url="javascript:window.open('Sample.doc','SampleName'); return false" title="FAQs"  description="FAQs" />

Есть идеи? Есть ли какой-нибудь javascript, который я могу использовать, который не требует, чтобы я регистрировал функцию на каждой странице?

Ответы [ 6 ]

8 голосов
/ 07 мая 2010

Я использовал следующее:

<siteMapNode url="javascript:window.open('Sample.doc','SampleName'); void(0);" title="FAQs"  description="FAQs" />
4 голосов
/ 07 апреля 2014

Если вы обрабатываете событие OnMenuItemDataBound в элементе управления ASP.NET Menu, вы можете установить целевой атрибут для этого элемента:

MyMenu.MenuItemDataBound += OnMenuItemDataBound

private void OnMenuItemDataBound(object sender, MenuEventArgs e)
{
    // Sets all menu items to open in new windows
    e.Item.Target = "_blank";

    // Uses a 'target' attribute in the XML sitemap if set:
    string targetAttributeValue = ((SiteMapNode)e.Item.DataItem)["target"];
    if (targetAttributeValue != null) {
        e.Item.Target = targetAttributeValue;
    }
}
1 голос
/ 06 мая 2010

Вам необходимо выяснить, какой элемент управления использует файл карты сайта, а затем перехватить событие, сгенерированное из этого элемента управления.

1 голос
/ 06 мая 2010
javascript:widow.open

Вы уверены, что не имеете в виду window.open?
Я не думаю, что ваш сценарий так сильно связан с вдовами;)

0 голосов
/ 05 марта 2016

target="_blank" на исходной странице был потерян, когда страница отображалась для меня. Я должен был сделать это в коде так:

private void Menu1_PreRender(object sender, EventArgs e)
{
    if (!IsPostBack) {
        MenuItem FAQsItem = new MenuItem("FAQs");
        FAQsItem.NavigateUrl = "~/Sample.doc"; //You'll need to figure out your correct URL
        FAQsItem.Target = "_blank";
        Menu1.Items.Add(FAQsItem);
    }
}

Примечание: я добавил это в PreRender меню, потому что я просто хотел добавить его в конец других элементов MenuItem, которые были на исходной странице и не нуждались в target="_blank".

0 голосов
/ 17 августа 2012

Почему бы просто не использовать целевой атрибут?

<siteMapNode url="Sample.doc" target="_blank" title="FAQs"  description="FAQs" />
...