9
votes

fenêtre.focus (), self.focus () ne fonctionne pas dans Firefox

Salut tout je développe une application de chat ... J'ai plusieurs fenêtres de chat ... je veux savoir quel Windw contient un nouveau message ... J'ai le code suivant ..

http://localhost/nisanth/admin/Chat/index/chatId/16


8 commentaires

Je ne vois pas comment cela peut travailler dans IE; auto est indéfini dans le code cité. S'il est défini ailleurs, il est préférable de montrer que, car il est un peu important de savoir ce que cela est censé faire référence.


Comment ça se passe "... Je veux savoir quelle fenêtre contient un nouveau message ..." Conséquence à Focus Ne pas faire ce que vous attendez? (Aussi, pouvez-vous expliquer plus ce que vous entendez par là?)


@Nisanth: fenêtre peut être, mais encore une fois, pas auto sauf si vous ne le définissez ailleurs. auto n'est pas un objet intégré. C'est le nom de beaucoup de personnes à l'intérieur d'une fermeture qu'ils passent comme un gestionnaire de rappel / d'événement lorsqu'ils veulent se référer à la valeur de la valeur de la fermeture, mais de le faire, mais vous devez définissez effectivement-le (par exemple, var auto = ceci; ).


Self.focus () travaille dans IE8


Bien quoi que ce soit, @nisanth; Il n'est pas pertinent de la question de savoir ce qui fonctionnera dans Firefox, car à Firefox, il est sous contrôle de l'utilisateur.


@Pointy Y a-t-il un tour pour gérer mon problème dans Firefox


Lisez ma réponse, @nisantath. Vous ne pouvez pas remplacer la configuration de l'utilisateur.


@ T.J. Crowder: La plupart des navigateurs implémentent une variable globale nommée auto , qui est simplement une référence à l'objet global, ne fait partie d'aucune spécification, mais semble qu'il existe sur chaque navigateur ... ( fenêtre.elf == fenêtre ) développeur.mozilla.org/en/dom /Window.elf


3 Réponses :


12
votes

Firefox obéira uniquement aux demandes d'élever une fenêtre si une option de sécurité est définie et qu'elle n'est pas définie par défaut. Chrome ne fera pas attention aux demandes de concentration () autant que je puisse dire. Safari obéit à la demande Focus ().

Le paramètre Firefox spécifique est dans les "Outils" -> "Options" ("Modifier -> Préférences" sur la boîte de dialogue Linux, peut-être MacOS). Il y a un onglet "Contenu" et en ce qu'il y a une case à cocher pour permettre à JavaScript. Avec que est un bouton "avancé" qui soulève une autre boîte de dialogue , dans laquelle on trouve une case à cocher pour autoriser (ou interdire) la levée et l'abaissement de Windows par code de page.

edit: Voici une page de test: http://gutfulofbeer.net/ Focus1.html et vous devriez être capable de voir que Firefox sera élever une fenêtre lorsque la page appelle fenêtre.focus () . Vous devez soit avoir le navigateur configuré de sorte que de nouvelles fenêtres (créées avec window.open.open.open () ) s'ouvrent dans une nouvelle fenêtre séparée au lieu d'un onglet, sinon vous pouvez déchirer l'onglet de la Page secondaire quand il s'ouvre.


7 commentaires

Eh bien, vous devez faire quelque chose de mal, car cela fonctionne définitivement. Avez-vous essayé d'émettre une "alerte ()" lorsque vous pensez que votre appel à "window.focus ()" est en cours?


Alerte fonctionne, Self.blur (), Travailler, Fenêtre.MOVETO () Tout ce qui fonctionne: (... si alerte () fonctionne alors la fenêtre est focalisée mais mon client ne le veut pas;)


J'ai utilisé la fenêtre.focus () dans mes propres applications et je suis certain à 100% qu'il fonctionne dans Firefox lorsque le navigateur est configuré pour le permettre.


Votre exemple fonctionne bien ici ... mais je pense que mon cas a un problème ... :( Y a-t-il un moyen d'alerter l'objet de la fenêtre ....


Euh ... Eh bien, je ne suis pas sûr de ce que tu veux dire; L'objet "fenêtre" est intégré au navigateur. Maintenant, il est possible que quelque chose ait changé la Focus () fonction, mais cela ne semble pas très probable.


Malheureusement, cette réponse n'est plus pertinente car la fenêtre Préférences a changé de manière spectaculaire et que le réglage n'est plus trouvé là-bas.


@Thomaspaine Ancient Stackoverflow Des questions sont un problème intéressant.



1
votes

J'ai eu le même problème, je me pose un problème avec mon script JS, après une longue recherche, j'ai trouvé une solution:

1) Dans un nouvel onglet, tapez à propos de: config dans la barre d'adresse et appuyez sur la touche "Entrée". Cliquez sur le bouton "J'accepte le risque!" Afin de confirmer l'avertissement

2) Dans le champ de recherche, tapez DOM.DISABLE pour obtenir DOM.DISABLE_WINDOW_FLIP

3) Si la propriété dom.disable_window_flip est vraie, double-cliquez dessus pour allumer la valeur de true à false


0 commentaires

0
votes

Pour quelqu'un d'autre cherche à vous concentrer sur un onglet, un autre onglet (onglet A) peut apporter une languette différente (onglet B) à l'avant.

si la fenêtre .Name code> de l'onglet B est 'myWindow123', puis dans l'onglet A exécuté ceci: p>

window.open('', window.opener.name);


0 commentaires