2010-05-06 22 views
5

我希望能夠使用站點地圖在菜單控件中打開文檔。我在站點地圖中使用以下代碼,但出現錯誤。我希望能夠點擊菜單項,讓它在新窗口中打開示例文檔,但不能讓原始頁面導航到新的位置(實質上在主頁上什麼都不做)。如何從站點地圖在單獨的窗口中打開文檔

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

任何想法?有沒有一些JavaScript我可以使用,不需要我在每個頁面上註冊一個功能?

回答

8

我最終使用下列內容:

<siteMapNode url="javascript:window.open('Sample.doc','SampleName'); void(0);" title="FAQs" description="FAQs" /> 
1
javascript:widow.open 

你確定你不是指window.open
我不認爲你的腳本與寡婦有很大關係;)

+0

哈!我的意思是window.open。我已經更新了我的問題(這不是我的問題。)我一直在嘗試很多我sl things不樂的事情......謝謝。 – Sean 2010-05-06 19:29:22

1

你需要找出哪個控件使用了sitemap文件,然後捕獲該控件生成的事件。

0

爲什麼不直接使用對象的屬性?

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

目標屬性不適用於由菜單控件生成的鏈接標記 – Tevin 2014-04-07 12:51:56

+0

Up投票,因爲我想知道同樣的事情。所以這個問題即使只是爲了打折解決方案也是有用的。 – 2014-11-10 05:45:29

3

如果你處理的ASP.NET菜單控制OnMenuItemDataBound事件,你可以在那裏的項目設置目標屬性:源頁面上

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; 
    } 
} 
0

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因爲我只是想將它添加到其他的MenuItems的那名在源頁結束,做不需要target="_blank"

相關問題