tag page name attribute javascript jquery firefox

javascript - page - title css



PestaƱa de enfoque o ventana (11)

¿Has probado window.focus() ?

para una pequeña aplicación, estoy abriendo algunas ventanas / pestañas de mi script. Por supuesto, si el navegador abre una ventana o una pestaña no está en mi mano.

Sin embargo, mantengo las referencias a los objetos de window recién creados y cambio su contenido "de forma remota" desde otra ventana. Todo esto sucede bajo el mismo document.domain así que no hay problema xss.

El problema es que no puedo focus manera confiable las ventanas / pestañas creadas. Ya que estoy escribiendo una aplicación muy específica para un cliente, solo estoy apuntando a Firefox como navegador. Una opción que tengo es, por supuesto, solo hacer una remoteWindow.alert(''foobar''); para obtener esa ventana / pestaña en la parte delantera, pero eso es bastante feo no lo es.

Encontré esta respuesta ¿Cómo enfocar la ventana / pestaña como alerta ()?

y se dice allí, que Firefox tiene una opción para permitir el enfoque del script. Así que finalmente mi pregunta es, ¿cuál es esa opción? Busqué en about:config para "tabs" y "focus" pero no encontré nada relacionado.

¿Cómo configurar?



Abrir nuevas ventanas / pestañas del navegador es problemático. ¿Has considerado los diálogos de jqueryui lugar de abrir una nueva ventana?


Ampliando la contribución de Alex arriba. El caso de uso es tener un CMS. Cuando el propietario de un sitio inicia sesión en el CMS y la interfaz se carga en otra pestaña. Le da al propietario del sitio un enlace en el extremo frontal que vuelve a cargar la pestaña CMS y enfoca.

Coloque este javacript en las páginas frontales (o inclúyalo en un archivo JS global):

<script type="text/javascript"> // Stupid script to force focus to an existing tab when the link is clicked. // And yes, we do need to open it twice. function loadAdmin(a) { var tab = window.open(a.href, a.target); tab.close(); tab = window.open(a.href, a.target); return false; } </script>

Me gusta poner el enlace de CMS justo después del contenido H1. Nuevamente, esto es solo si están conectados al CMS. En este caso, estoy apuntando a un CMS enmarcado, por lo que tiene que saber qué cargar en el marco principal (juego de palabras).

<h1> Page Heading <a href="/admin/main/?load=pages/page.cfm?id=#request.pageid#" title="Edit this page" onclick="return loadAdmin(this);" target="#cgi.server_name#wvAdmin" ><img src="/media/admin/icon-edit.png" alt="Edit this page"/></a> </h1>

Esto para asegurarse de que la pestaña sea única, en caso de que tenga varios CMS en mi navegador (compatible con varios clientes):

target = "# cgi.server_name # wvAdmin"

Finalmente, en el cargador de marcos en el CMS, agregue esto ...

<script type="text/javascript"> window.name = ''#cgi.server_name#wvAdmin''; </script>

... para asegurarnos de que si el usuario abre el CMS por su cuenta, todavía podamos trabajar con él.


Consulte la documentación de Mozilla: https://developer.mozilla.org/en/Code_snippets/Tabbed_browser .

var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); var browserEnumerator = wm.getEnumerator("navigator:browser"); // Check each browser instance while (browserEnumerator.hasMoreElements()) { var browserWin = browserEnumerator.getNext(); var tabbrowser = browserWin.gBrowser; // Check each tab of this browser instance var numTabs = tabbrowser.browsers.length; for (var index = 0; index < numTabs; index++) { var currentBrowser = tabbrowser.getBrowserAtIndex(index); if (/*some logic*/) { // For an example tabbrowser.selectedTab = tabbrowser.tabContainer.childNodes[index]; // Focus *this* browser-window browserWin.focus(); break; } }

Aquí hay un enfoque más fácil basado en eventos: https://developer.mozilla.org/En/Listening_to_events_on_all_tabs .


Está sucio y es feo, por lo que es solo información adicional: si llama a una alerta () en cualquiera de las pestañas / ventanas abiertas, esa pestaña ganará enfoque.


La única solución que veo es forzar la ventana emergente en una nueva ventana, ya que no parece haber una manera de enfocar otra pestaña. Esta solución también requiere que cambie la configuración de seguridad de Javascript predeterminada en la Tools > Options > Content tab y haga clic en el botón Advanced junto a la casilla de verificación Enable Javascript y marque la casilla central para permitir el enfoque de las ventanas.

Para forzar el uso de una ventana en lugar de una pestaña, use win = window.open("http://www.google.com", "test" ,"modal=yes"); y luego llamar a win.focus(); cuando te apetezca

EDITAR: En realidad olvidé mencionar el hecho de que esto es solo FF.


La respuesta simple es: no puedes. Los navegadores no exponen ese tipo de API a javascript.


Lo siguiente parece funcionar en IE8 y FF13:

<script type="text/javascript"> // Stupid script to force focus to an existing tab when the link is clicked. // And yes, we do need to open it twice. function openHelp(a) { var tab = window.open(a.href, a.target); tab.close(); tab = window.open(a.href, a.target); return false; } </script> <a href="help.html" target="help" onclick="return openHelp(this);">Help</a>


No hay una manera real de hacer esto por la sencilla razón de que si los sitios web tuvieran esta capacidad, terminarían usándola para enfocar los anuncios automáticamente o lo que sea.

Se puede hacer, pero solo en Firefox SI el usuario lo tiene habilitado, lo que probablemente no lo hará.