Как остановить дальнейшие события JavaScript от выполнения - PullRequest
0 голосов
/ 12 февраля 2009

Я использую сетку Infragistics в форме и обрабатываю несколько клиентских событий в ячейках (например, щелчок ячейки, перед редактированием ячейки, перед обновлением ячейки и т. Д.).

В событии щелчка по ячейке я создаю вторичное окно (успешно) следующим образом:

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

Однако 'convChartWindow' не поддерживает фокус и покрывается родительским окном. После этого ни одно из других событий в моей ячейке не сработало, но, похоже, работает какой-то Infragistics JavaScript.

Есть ли что-то, что я могу добавить после .focus () выше, чтобы предотвратить дальнейший запуск javascript и сохранить фокус на правильном окне?

Спасибо!

Ответы [ 4 ]

4 голосов
/ 12 февраля 2009

Позвоните по этому номеру:

// 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

Это было отснято отсюда: Что эквивалентно 'event.returnValue = false' в Firefox

и написано Питером Блюмом
См .: PeterBlum.com

0 голосов
/ 12 февраля 2009

Пусть дочернее окно вызывает сам фокус при его открытии.

0 голосов
/ 12 февраля 2009

Если есть что-то еще в функции, которая выполняет код, который вы дали, попробуйте использовать:

break;

после

convChartWindow.focus();
0 голосов
/ 12 февраля 2009

Я не знаю, что такое инфраструктура. Я предполагаю, что это какая-то структура, которую вы не можете контролировать. на вашем месте я бы попробовал следующее:

1) установите тайм-аут для возврата фокуса к окну через 1000 мс или установите тайм-аут для установки фокуса на нужное окно. это взломать

2) выяснить, какие функции запускают события, которые разрушают вашу жизнь, переопределить эти функции в вашем коде и добавить флаг, который предотвратит их от совершения чего-то злого

3) Последнее, по крайней мере, прочитайте это: http://www.quirksmode.org/js/events_order.html там может быть что-то полезное для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...