2008-11-04 6 views
1

J'ai le code JavaScript suivant pour faire apparaître une fenêtre dans Internet Explorer. Le code est exécuté à partir d'une page dans une boîte de dialogue modale Microsoft CRM. (RequestID est une chaîne qui est toujours la même dans le système de test - au moment où il contient "abcdefg" - sans les guillemets).Fenêtre contextuelle d'ouverture de comportement étrange dans Internet Explorer

var cancelUrl = "CancelRequest.aspx?RequestID=" + RequestID; 
alert("About to open a window.\n\n" + cancelUrl); 
window.open(cancelUrl); 
alert("Window opened"); 

Je m'attends à voir un message m'indiquant que je suis sur le point d'ouvrir une fenêtre. Je m'attends alors à voir une fenêtre s'ouvrir et recevoir un autre message à propos de l'ouverture de la fenêtre. Je ne me soucie pas vraiment de l'ordre des deux derniers événements; les alertes sont là, donc je sais que le code a été exécuté.

J'ai deux PC et un PC virtuel. Tout en cours d'exécution IE7. Sur le Windows Vista VPC, les messages et la fenêtre contextuelle s'affichent systématiquement à chaque fois.

Sur Vista PC et WinXP PC, les messages s'affichent, mais la fenêtre contextuelle apparaît uniquement par intermittence. (Je pense que cela peut être le cas sur le PC Vista aussi).

Tous les trois ont des réglages identiques dans IE. Tous ont le bloqueur de pop-up IE désactivé et aucun autre bloqueur de pop-up n'est installé.

Quelqu'un peut-il faire la lumière là-dessus?

Répondre

3

Ah, je pense que je l'ai eu ... raté dans la description ...

Vous êtes en essayant d'ouvrir une fenêtre non modale d'une de dialogue modale dans IE.

Ceci AFAIK, ne devrait pas fonctionner.

Essayez d'ouvrir une autre fenêtre modale à la place.

efficacement vous disent ...

sur la fenêtre A, ouvrez la fenêtre modale B, maintenant ouvrir la fenêtre non modale C, ce qui est pas vraiment valable.

0

Ce code est simple. Utilisez le débogueur et voyez ce qui se passe.

Vérifiez ce site avec FireFox ou Chrome, ils ont des débogueurs JS.

Edit:

Ajouter bloc try/catch autour window.open() et voir s'il y a une exception là.

Edit 2:

Je vois maintenant que vous envoyez des personnages comme RequestId. Vous devriez vérifier si cette URL peut gérer ce type de valeur. Puisque le nom est RequestId, je dirais qu'il y a de grandes chances qu'il y ait un seul paramètre numérique. Si cela est correct, alors il peut arriver que le côté serveur se bloque lorsque vous essayez d'ouvrir la fenêtre et que rien ne se passe. Raison de plus pour définir try/catch bloquer et tester.

+0

Malheureusement, je ne peux pas utiliser ces navigateurs, car ils ne fonctionnent pas avec Dynamics CRM (sauf si quelque chose me manque). – BlackWasp

+0

Utilisé le débogueur Visual Studio 2008. L'appel de window.open est fait mais rien ne se passe :-( – BlackWasp

+0

Javascript ou HTML est probablement spécifique à IE, peut-être pourriez-vous essayer de l'exécuter dans l'un des navigateurs et naviguer vers la page en question – zendar

0

Vous pouvez essayer Firebug Lite, qui fonctionnera pour IE.

http://getfirebug.com/lite.html

Le try/catch autres personnes ont mentionné est aussi une bonne idée. Je pense.

En outre, est-il possible que la fenêtre contextuelle tente d'utiliser une fenêtre déjà ouverte mais réduite au minimum. Donc ça ne semble pas fonctionner mais c'est juste en train de recharger la fenêtre minimisée?