2011-02-24 15 views
5

Tengo un cierto elemento de IU, que al hacer clic debería navegar a otra URL. he intentado manejar el ratón hacia abajo evento y ejecutar algo como esto: System.Windows.Browser.HtmlPage.Window.Navigate (nueva Uri ("http://google.com"), "_blank");Browser.HtmlPage.Window.Navigate está bloqueado, pero HyperlinkButton no es, ¿por qué?

Sin embargo, este es bloqueado por el navegador (He intentado tanto Chrome y Firefox) a menos que puedo desactivar el bloqueo de ventanas emergentes. Hice algunas investigaciones y parece que el navegador bloquea navegaciones que no ocurren como resultado de la interacción del usuario y, en lo que respecta al navegador, esta navegación se inicia con un complemento (Silverlight), no un usuario.

OK, tiene sentido. Pero luego intenté usar un HyperlinkButton en su lugar y NO fue bloqueado.

Me pregunto por qué estos dos enfoques reciben un tratamiento diferente del navegador. ¿Alguna idea?

En realidad trabajé en torno al problema envolviendo la navegación activación de interfaz de usuario con un HyperlinkButton, pero todavía estoy muy curiosa ...

+0

En IE9, la propia HyperlinkButton tiene un problema: http://stackoverflow.com/questions/14678235/silverlight-hyperlinkbutton-not-working-at-all Usted tendrá que agregar ' 'o use' ' –

Respuesta

4

Voy a tirar de una cita corporativa de fantasía y decir "Es una función, no un error ".

El equipo de Silverlight es, evidentemente, preocupados por la seguridad. No quieren que haxorz loco como tú y yo hagamos cosas locas con nuestras aplicaciones, como abrir una serie de ventanas del navegador que encaminen a las personas a Zombo.com. ¡Solo imagina el coro! Zombo!

Summarized from their documentation: Quieren que usemos únicamente HyperlinkButton para salir de su aplicación. De hecho, fueron al extra step, y dependiendo de nuestra configuración, incluso lanzarán una SecurityException para nosotros si navegamos a una página externa, incluso desde un HyperlinkButton. Que agradable.

La verdadera pregunta: ¿Por qué el botón de hipervínculo y no otra cosa?

Solo puede navegar una "cosa". esta toma ahorra tiempo a Microsoft mientras prueba Silverlight. Esto puede navegar tanto a páginas XAML internas como a páginas web externas. También podría ser consistente y tener solo una forma de navegar.

Es un UIElement. Su código detrás de "me gusta" se ejecuta en el hilo visual principal. Puede prometerle al navegador que un elemento visual quiere ir a alguna parte. Microsoft también puede poner su lógica de limitación en un control que requiere un árbol de eventos de entrada de mouse/clic del mouse.

Con todo, tiene sentido para iniciar sencilla al hacer un control haga el trabajo.

¡Cosas divertidas! Espero que esto te ayude.

+1

Tiene sentido. Estaba concentrado en descubrir por qué el navegador trata estos dos métodos de navegación de manera diferente que no había considerado la opción de que en realidad el plugin SL los tratara de manera diferente. ¡Gracias! –

+1

Obtiene un +1 para la introducción de la comedia;) –

+0

Me hizo echar un vistazo a zombo.com :( – Terry

Cuestiones relacionadas