2010-05-06 14 views
5

Estaba esperando abrir un documento en un control de menú usando un mapa del sitio. Estoy usando el siguiente código en el mapa del sitio, pero obtengo un error. Me gustaría poder hacer clic en el elemento del menú, abrir el documento de muestra en una nueva ventana, pero no hacer que la página original vaya a un lugar nuevo (esencialmente para no hacer nada en la página principal)Cómo abrir un documento en una ventana separada de un mapa del sitio

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

¿Alguna idea? ¿Hay algún javascript que pueda usar que no requiera que registre una función en cada página?

Respuesta

8

Terminé usando la siguiente:

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

¿Estás seguro de que no quieres decir window.open?
No creo que su secuencia de comandos esté relacionada con las viudas;)

+0

¡Hah! Me refería a window.open. He actualizado mi pregunta (ese no era mi problema). He estado probando tantas cosas que he descuidado ... gracias. – Sean

1

Deberá averiguar qué control está consumiendo el archivo del mapa del sitio y luego detectar el evento generado desde ese control.

0

Por qué no sólo tiene que utilizar el atributo de destino?

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

El atributo de destino no se aplica a la etiqueta de enlace generada por el control de menú – Tevin

+0

Vomité esto porque me preguntaba lo mismo. Por lo tanto, la pregunta es útil aunque solo sea para descontar una solución. –

3

Si controla el evento OnMenuItemDataBound en el control de menú ASP.NET, se puede establecer el atributo de destino en el artículo allí:

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" en la página de origen se perdió cuando la página representada para mi. Tenía que hacerlo en el código detrás de este modo:

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

Nota: He añadido esto a PreRender del menú porque yo sólo quería añadir al final de las otras MenuItems que estaban en la página de origen y lo hizo no es necesario target="_blank".

Cuestiones relacionadas