estoy tratando de interceptar tocando en un enlace en un control WebBrowser. Mi página HTML contiene enlaces personalizados, para algunos comenzando con shared: // Me gustaría interceptar cuando el usuario toque en él.Procedimiento para interceptar cuando el usuario haga clic en un enlace en un navegador web
En el iPhone me gustaría utilizar la web View: shouldStartLoadWithRequest: navigationType: método, y mirar a la dirección URL que se ha seleccionado.
no he logrado reproducir un comportamiento similar con Silverlight para Windows Phone.
que hago algo así como:
{
webBrowser1.Navigating += new EventHandler<NavigatingEventArgs>(webBrowser1_Navigating);
}
void webBrowser1_Navigating(object sender, NavigatingEventArgs e)
{
string scheme = null;
try
{
scheme = e.Uri.Scheme; // <- this is throwing an exception here
}
catch
{
}
if (scheme == null || scheme == "file")
return;
// Not going to follow any other link
e.Cancel = true;
if (scheme == "shared")
{
}
Pero supongo que una excepción al leer algunas de las propiedades de la URI, cuando es un URI de serie con un archivo predeterminado: // URL Además, el evento ISN Navegando' t incluso se activó para los enlaces que comienzan con shared: //
Ahora que puedo capturar el tapping en un shared: // No me importa mucho, pero al menos me gustaría poder recuperar la URL vamos a navegar y cancelar la operación predeterminada para una URL en particular.
Alguna idea de lo que está pasando? Gracias
Editar: Resultó que el problema es que el evento Navegando se genera solamente para los siguientes enlaces: file: // http: // o mailto: // Los atributos del esquema de la URI se solo disponible para http: // y mailto: // enlaces
así que lo que hice al final fue reemplazar el enlace shared: // con http://shared/blah ... Y miro la URL ... Esto funciona para mi proposito. Ahora puedo tener enlaces que tienen una acción diferente (como abrir una ventana adicional) dependiendo de los enlaces en el html.
En realidad la excepción se lanzado para todo menos un enlace externo (URL que comience por http: //) o correo electrónico (url comenzando con mailto: //) – jyavenard
¿Ha intentado utilizar e.Uri.ToString() y luego analizarlo para recuperar el esquema? –
¿Cómo se detecta cuando se hace clic en 'shared: //'? – keyboardP