Текущее время: Вт, авг 05 2025, 03:22

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: JavaSript в WAD: событие onLoad для обработки данных
СообщениеДобавлено: Вт, июл 27 2010, 09:46 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
Добрый день,

Вопрос такой:

Для замены # на пустое значение, а так же, для небольшого оформления, создал функцию на JavaScript.
Функцию поместил в веб-элементе "Сценарий" в разделе иное.
Далее, в самом шаблоне, в теге body добавил событие onLoad.

Поведение системы:
Отчет отображается корректно, все замены срабатывают. Но, при попытки свернуть узел иерархии или при ином действии - отчет получает первоначальный вид и функция не запускается(подозреваю, что обновляется элемент страницы, без обращения к тэгу body).

Пробовал второй варинат - включил функцию внизу шаблона, после строки
<!-- insert data providers, items and other template content here -->
вставил JavaScript
Code:
window.onload = function() { ModifyData(); }


В этом месте функция начала срабатывать всегда, т.е. так, как нужно. Но с единственной загвоздкой: она блокирует все остальное :(
Т.е. и всплывающие меню, и даже кнопку экспорта в эксель. По нажатию на любое действие выпадает моя функция(подозреваю, что window.onload срабатывает на все всплывающие окна, хотя чего тут такого?).

Вопрос такой:
Как мне теперь совместить все это - и функцию сохранить и обработку стандартных скриптов тоже.

Заранее благодарен за ответ.
С уважением.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: JavaSript в WAD: событие onLoad для обработки данных  Тема решена
СообщениеДобавлено: Вт, июл 27 2010, 10:25 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
Вопрос решил с помощью второго своего варианта с модификацией.

Может кому пригодится.

JavaScript загрузка есть та, которую использует система, а есть моя.
Я теперь не подменяю на свою, а добавляю ее:

1) добавляю строку
<!-- insert data providers, items and other template content here -->
Code:
<script type="text/javascript" >addLoadEvent(ModifyData);</script>


2) в редакторе скриптов пишу
Code:
function ModifyData( ) {
  var Elements=document.getElementsByTagName('td');
  for(var i=0;i<Elements.length;i++) {
    if(Elements[i].innerText=='#') {
      if (Elements[i].innerHTML.charAt(1) == 'T' ) {
        Elements[i].innerHTML = Elements[i].innerHTML.replace('>#<','> <');
      } else {
        Elements[i].innerText=' ';
        Elements[i].style.whitespace='nowrap';
      }
    }
  }
}

(заменяю # на пустые значения)

Code:
function addLoadEvent(func) {   
  var oldonload = window.onload;   
  if (typeof window.onload != 'function') {   
    window.onload = func;   
  } else {   
    window.onload = function() {   
      if (oldonload) {   
        oldonload();   
      }   
       func();   
    }
  }   
}   


и работает и мое и стандарт :)

Решение нашел в примере по JavaScript вот здесь - Using Multiple JavaScript Onload Functions.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB