2012-08-30 15 views
12

¿Es posible abrir una nueva ventana o pestaña a través del javascript en el navegador Windows Phone 7?Cómo abrir una nueva ventana o pestaña mediante javascript en el buscador de Windows Phone 7

window.open no parece ser compatible ni target='_blank'.

¿Falta algo aquí? Esta característica básica funciona bien en iphone y android. ¿Alguna idea sobre cómo puedo hacer que esto funcione en Windows Phone 7?

+0

En la configuración del navegador, hay una opción para 'Abrir enlaces en una nueva pestaña'. Dudo que la aplicación pueda anularlo. – Osiris

Respuesta

27

En Windows Phone 7 esto no es posible mediante programación. Todo está en la mano de los usuarios.

Para citar un Microsoft employee:

"Un usuario puede abrir un enlace en una nueva pestaña al tocar y mantener el enlace a obtener el menú de contexto, pero un ancla o secuencias de comandos request para apuntar a una nueva ventana se ignora

Hay varias razones para esto:..

  • comunicaciones en ventanas múltiples no son compatibles
  • Windows Phone solo tiene una instancia del navegador , por lo que las nuevas "ventanas" deben abrirse como Tab.
  • La experiencia del navegador es a pantalla completa, por lo que el usuario no tiene una buena indicación visual de que se hayan movido a una nueva pestaña a menos que lo soliciten explícitamente.
  • Navegando "atrás" en una nueva pestaña sale del navegador que sería confuso para el usuario si no sabían una nueva cuenta fue creada."
+0

Eso es lo que temía. ¡Gracias por confirmar! – bmurmistro

+0

excelente respuesta. ¿Hay alguna información sobre si este es el mismo caso para Windows Phone 8? – dan

+0

¿Existe alguna solución para verificar si se puede abrir una nueva ventana para que se pueda usar un método alternativo si no es así? –

3

Si usted está tratando de añadir esta función para el control del navegador in-ap, puedo sugerirle una forma.

Tiene que inyectar un script java en cada página web, el control del navegador puede cargar la página correctamente. En el script java use window.extern. notificar para invocar la función ScriptNotify en su código. En la detección del mensaje apropiado crear una nueva instancia de control del navegador y agréguelo a una matriz o lista. De este modo, puede emular la nueva función de pestaña para el control del navegador en la aplicación.

el código JS a inyectar puede ser así String NEW_TAB_FUNCTION = "window.open = function(__msg){window.external.notify('addnewtab');};";

que se puede inyectar usando browser.InvokeScript("eval", NEW_TAB_FUNCTION);

en jaque ScriptNotify para addnewtab (mantener IsScriptEnabled = True)

void WebBrowser_ScriptNotify(object sender, NotifyEventArgs e) 
    { 
     if (e.Value == "addnewtab") 
     { 
      //do work here 
     } 
    } 

Tenga en cuenta que he anulado la función window.open en el JS con una función que se inyectará cada vez en una nueva página web para recibir notificaciones de la entrada del usuario.

También tenga en cuenta que esto funciona solo para el control WebBrowser y no para el navegador externo.

+0

Gracias por la respuesta. Lamentablemente, solo estoy tratando con el navegador "externo". – bmurmistro

+0

bien, en ese caso, la segunda respuesta es válida :) –

0

Mi solucionar este problema es simple:

window.open 

vuelve nulo si no, por lo que en ese caso lo abra en la misma ventana:

var win = window.open(href, '_blank'); 
    if(!win || win==null){ 
     window.location.href = href; 
    }else{ 
     win.focus();  
    } 

que es una buena práctica para tener una de todos modos ...

+0

Hola Tomer, Esto no funciona en Windows Phone 10 Edge browser. ¿Alguna idea? –

+0

@AshutoshJha Creo que tiene que ver con el tamaño de la ventana. Mire aquí: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11026637/ y aquí: https://answers.microsoft.com/en-us/insider/forum/insider_internet- insider_spartan-insiderplat_pc/windows-edge-does-not-open-the-new-window-directly/272c607a-253f-47a4-8ec7-4236d30940a1 –

Cuestiones relacionadas