2009-02-12 5 views
0

J'utilise une grille Infragistics sur un formulaire et gère plusieurs événements côté client sur les cellules (par exemple, un clic sur une cellule, avant une modification de cellule, avant une mise à jour de cellule, etc.).Comment arrêter l'exécution d'autres événements JavaScript

En cas de clic cellulaire, je suis fraie une fenêtre secondaire (avec succès) comme suit:

var convChartWindow = window.open("conversioncharts/" + currentCell.getValue() + ".html", "chart", "location=0,0, status=1, scrollbars=1, width=" + screen.width + ", height=175");   
convChartWindow.focus(); 

Cependant, le « convChartWindow » ne maintient pas la mise au point, et se couvre de la fenêtre parent. Aucun de mes autres événements de cellule ne se déclenche après cela, mais il semble y avoir du code JavaScript Infragistics qui s'exécute.

Y a-t-il quelque chose que je puisse mettre après le .focus() ci-dessus pour empêcher l'exécution de javascript et garder le focus sur la fenêtre correcte?

Merci!

Répondre

0

Je ne sais pas ce qu'est Infragistics. Mal assumer son cadre sur lequel vous n'avez aucun contrôle. Si vous étiez vous, j'essaierais ce qui suit:

1) définir un délai d'attente pour se recentrer sur la fenêtre après 1000 ms, ou définir une boucle de temporisation pour définir le focus à la fenêtre dont vous avez besoin. c'est un hack.

2) comprendre quelles fonctions embrasera les événements qui ruine votre vie, supplantent les fonctions dans votre code et ajouter un drapeau qui les empêchera de faire quelque chose mal

3) Enfin, lire atleast ceci: http://www.quirksmode.org/js/events_order.html il pourrait y avoir quelque chose d'utile pour vous

+0

Je suis allé avec le délai d'attente et cela fonctionne. Merci! – GernBlandston

0

Avez la fenêtre enfant appeler le focus lui-même quand il s'ouvre.

0

S'il y a quelque chose d'autre dans la fonction qui exécute le code que vous avez donné, essayez d'utiliser:

break; 

après:

convChartWindow.focus(); 
+0

break est la sortie d'une boucle –

4

Appelez ce:

// Prevents event bubble up or any usage after this is called. 
// pE - event object 
function StopEvent(pE) 
{ 
    if (!pE) 
    if (window.event) 
     pE = window.event; 
    else 
     return; 
    if (pE.cancelBubble != null) 
    pE.cancelBubble = true; 
    if (pE.stopPropagation) 
    pE.stopPropagation(); 
    if (pE.preventDefault) 
    pE.preventDefault(); 
    if (window.event) 
    pE.returnValue = false; 
    if (pE.cancel != null) 
    pE.cancel = true; 
} // StopEvent 

Ce fut tirée d'ici: What is equivalent of 'event.returnValue=false' in Firefox

et a été écrit par Peter Blum
Voir: PeterBlum.com

+0

Quel est l'objet 'pE'/événement qui est envoyé dans cette fonction? – GernBlandston

+0

Essayez de passer à cela. c'est-à-dire StopEvent (this); Sinon, quels sont les paramètres de votre événement Javascript? – Bravax

+0

Cela n'a pas fonctionné. Il parcourt le code, mais n'arrête pas la mise au point. Les paramètres de l'événement sont juste des chaînes d'ID. – GernBlandston

Questions connexes